c语言简单有关问题

c语言简单问题
输入五位数,判断是否是回文数。我的代码哪个地方错了,怎么老是输出No呢?

#include<stdio.h>
#include<string.h>
int main()
{
int n,length,i=0,c;
char str[6];
while(scanf("%d",&n)!=EOF)
{
c=0;
sprintf(str,"%d",n);
length=strlen(str);
for(i=0;i<length;i++)
{
if(str[i]==str[length-i-1])
c++;
else
break;
}
if(c==3)
printf("Yes.\n");
else
printf("No.\n");
}
return 0;
}

------解决方案--------------------
C/C++ code

#include<stdio.h>
#include<string.h>
int main()
{
    int n,length,i=0,c;
    char str[6];
    while(scanf("%d",&n)!=EOF)
    {
        c=0;
        sprintf(str,"%d",n);
        length=strlen(str);
        for(i=0;i< (length / 2 + 1);i++)
        {
            if(str[i] == str[length - i - 1])
                c++;
            else
                break;
        }
        if(c==3)
            printf("Yes.\n");
        else
            printf("No.\n");
    }
    return 0;
}