Palindrome
Latest version:
1.02 (28 February 2007)
Usage
- To compile:
gcc -o palindrome palindrome.c
- Simply type
palindrome [phrase] to find out if the phrase is a palindrome.
Source code
palindrome.c
// palindrome.c -Inky, February 2007
#include <stdio.h>
#include <stdlib.h>
int main(const int argc, const char ** argv) {
char * strings[3] = {
"Usage: %s phrase\n",
"This is a palindrome.\n",
"This is NOT a palindrome.\n"
}, * phrase;
unsigned int i, j, k;
if (argc <= 1) {
fprintf(stderr, strings[0], argv[0]);
return 1;
}
unsigned int wordlen[argc-1];
// Initialise phrase and determine the character count
for (i = 1, k = 0; i < argc; i++) {
wordlen[i-1] = 0;
for (j = 0; argv[i][j] != '\0'; j++)
wordlen[i-1]++;
k += wordlen[i-1];
}
phrase = malloc(++k * sizeof(char));
// Get letters from the string
for (i = 1, k = 0; i < argc; i++) {
for (j = 0; j < wordlen[i-1]; j++) {
if (argv[i][j] >= 'a' && argv[i][j] <= 'z')
phrase[k++] = argv[i][j];
else if (argv[i][j] >= 'A' && argv[i][j] <= 'Z')
phrase[k++] = argv[i][j] + 0x20;
}
}
phrase[k] = '\0';
// Check if it's a palindrome
for (i = 0; i <= (k-1) / 2; i++) {
if (phrase[i] != phrase[k-i-1]) {
printf(strings[2]);
return 1;
}
}
printf(strings[1]);
return 0;
}