如何忽略符号&;C语言中回文代码中的空格 #包括 #包括 int main(int argc,字符**argv){ int l=0; “夫人,我是亚当。”; int h=strlen(a)-1; 而(h>1){ 如果(a[l++]!=a[h--]){ printf(“%s不是回文\n”,a); 返回1; } } }

如何忽略符号&;C语言中回文代码中的空格 #包括 #包括 int main(int argc,字符**argv){ int l=0; “夫人,我是亚当。”; int h=strlen(a)-1; 而(h>1){ 如果(a[l++]!=a[h--]){ printf(“%s不是回文\n”,a); 返回1; } } },c,C,这适用于像“madam”这样没有任何符号的字符串。是否有一种方法可以忽略所有符号,例如“.”、“.”,实际上是所有非字母数字字符。有没有办法让这一切顺利 您可以使用isalnum功能测试字母数字字符。如果你遇到一个不是,根据需要增加/减少你的索引,直到你找到一个是 #include <stdio.h> #include <string.h> int main(int argc, char **argv) { int l = 0; char a[] =

这适用于像“madam”这样没有任何符号的字符串。是否有一种方法可以忽略所有符号,例如“.”、“.”,实际上是所有非字母数字字符。有没有办法让这一切顺利

您可以使用
isalnum
功能测试字母数字字符。如果你遇到一个不是,根据需要增加/减少你的索引,直到你找到一个是

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {

    int l = 0;
    char a[] = "Madam, I'm Adam.";
    int h = strlen(a) - 1;
    while (h > 1) {
        if (a[l++] != a[h--]) {
            printf("%s is not a palindrome\n", a);
            return 1;
        }    

    }

}

while(lisalnum检查将检查字符是否为字母数字。tolower将在比较之前降低字符的大小写。我添加了这些检查和一些角大小写逻辑。看看这是否有效。它在我的mac上有效

while (l<h) {
    while (!isalnum(a[l]) && l<h) l++;
    while (!isalnum(a[h]) && l<h) h--;
    if (tolower(a[l++]) != tolower(a[h--])) {
        printf("%s is not a palindrome\n", a);
        return 1;
    }
}
printf("%s is a palindrome\n", a);
return 0;
#包括
#包括
#包括
int main(int argc,字符**argv){
int l=0;
“夫人,我是亚当。”;
int h=strlen(a)-1;
int匹配=0;

当(h>1&&l)时,该程序甚至不适用于
abcba
。它将立即退出,返回值
1
。似乎是seg故障?
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(int argc, char **argv) {

    int l = 0;
    char a[] = "Madam, I'm Adam.";
    int h = strlen(a) - 1;
    int match = 0;
    while (h > 1 && l <= h) {
        if (!isalnum (a[h])) {
            h--;
            continue;
        }
        if (!isalnum (a[l])) {
            l++;
            continue;
        }
        if (tolower(a[l++]) != tolower(a[h--])) {
            printf("%s is not a palindrome\n", a);
            return 1;
        }
        match = 1; /* at least one alphanum haracter match */
    }

    if (match == 1) {
        /* We need at least one true alphanum character match */
        printf("%s is a palindrome\n", a);
        return 0;
    }
    else
    {
        printf ("String of special chars %s \n", a);
        return 1;
    }
}