Reputation: 1
I'm trying to check wither a string is a palindrome by checking that each character always equals its "counterpart":
int isPalindrone(char *inputString) {
int string_size = sizeof(inputString);
int string_length = strlen(inputString);
int stop = (string_length / 2) - 1;
int char_size = sizeof(char);
char *counterpart, idx; // pointer arithmetic: pointers inherently know their own size
// counterpart of first char is last char
counterpart = inputString + string_length - 1;
for (idx = 0; idx <= stop; idx++) {
if (*inputString != *counterpart) {
return 0;
}
inputString += 1;
counterpart -= 1;
}
return 1;
}
Upvotes: 0
Views: 79
Reputation: 2420
You are using a lot more variables than what you really need.
You are using pointer arithmetic, so you can use the pointers to check the condition:
int isPalindrone(char *inputString) {
char *counterpart = inputString + strlen(inputString) - 1;
while(inputString < counterpart)
{
if(*inputString != *counterpart)
return 0;
inputString++;
counterpart--;
}
return 1;
}
or you could place the counterpart inside a for loop:
int isPalindrone(char *inputString) {
for(char *counterpart = inputString + strlen(inputString) - 1; inputString < counterpart; inputString++, counterpart--)
if(*inputString != *counterpart)
return 0;
return 1;
}
Upvotes: 1