Для этого есть хороший пример использования указателей, а не индексов:
int is_palindrome(const char *s) {
const char *end = s + strlen(s);
while (end > s) {
--end;
if (*end != *s) return 0;
++s;
}
return 1;
}
Если вам нравится короткий, запутанный код, вы можете переписать это:
int is_palindrome(const char *s) {
const char *end = s + strlen(s);
while (end > s) if (*(--end) != *(s++)) return 0;
return 1;
}
argv
не строка, это массив строк, одна для имени программы, а затем одна для каждого аргумента (обычно в командной строке разделяются пробелами). Итак, чтобы проверить, является ли первый аргумент палиндромом, вас интересует argv [1].
int main(int argc, char **argv) {
if (argc != 2) {
printf("usage: %s <string>\n", argv[0]); // or something
return 1;
}
if (is_palindrome(argv[1])) {
printf("Palindrome\n");
} else {
printf("Not a Palindrome\n");
}
}