数组怪题

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:34:56
main ()
{
static char c[8],a[8];
printf("input c[]:"); /* 假设输入12345678 */
gets(c);
printf("input a[]:"); /* 假设输入12345678 */
gets(a);

printf("c[]=%s\t",c);printf("a[]=%s\n",a); /* 居打输出c[]=1234567812345678
if (strcmp(c,a)==0) printf("ok\n");
else puts("error");
getch(); /想知道为什么,输出error
}

因为你C数组只有大小8,你输入12345678 ,,那没地方输入'\0',没有结束的地方,所以c=1234567812345678 a=12345678 所以不相等
只要你改下static char c[9],a[9];就可以得到正确结果!

这种结果是必然的
数组长度总共为8,你要输入8个字符,当然是放不下的,因为最后还有一个'\0',这样你输入a的时候就把c的'\0'去掉了,printf和strcmp都是靠'\0'判断一个字符串的结束的,自然结果不对