C语言字符串回文判断

这是我码的,但是运行不对,但自己找不出错


#include<stdio.h>
#include<string.h>
int main()
{   int i,j,s[20],k=0;
    gets(s);
    for(j=0; s[j]!='\0'; j++);
    printf("%d",j);
    if(j<1)
        printf("No");
    else
     {
        for(i=0; i<=j; i++,j--)
        {
            k=(s[i]!=s[j]);
        }
        if(k==0)
            printf("Yes");
        else
            printf("No");
    }

    return 0;
}

试了很久都不对

修改如下,改动处见注释,供参考:

#include<stdio.h>
#include<string.h>
int main()
{
    int i, j,  k = 0;  //int s[20]  修改
    char s[20];        // 修改
    gets(s);
    for (j = 0; s[j] != '\0'; j++);
    //printf("%d", j); // 修改 
    if (j < 1)
        printf("No");
    else
    {
        for (i = 0, j--; i <= j; i++, j--) //for (i = 0; i <= j; i++, j--) 修改
        {
            k = (s[i] != s[j]);
            if (k)  break;       // 修改
        }
        if (k == 0)
            printf("Yes");
        else
            printf("No");
    }
    return 0;
}