char s[5];
int main()
{
int flag;
printf("Enter data: ");
for (flag = 1; flag==1;)
{
scanf("%s",&s);
if (strlen(s)>5)
{printf("Error, exceeding data length! Please enter again: ");}
else
{flag=0;}
}
puts(s);}
当我把变量s 在 main 函数中申明的时候,
运行程序:除了输入刚好5个字符时,跳出 runtime check fail 什么什么的错误外。输入任意个数的字符 程序都能正常运行。
如上图,我把变量s 作为全局函数申明的时候。就没有这个错误。
这是为什么, 什么原理? 编译环境:vs2012。
谢谢你的回答。果真是因为没有考虑到\0。
可是。函数中,我已经设置了strlen>5时重来。
是不是strlen函数不计算\0???
关于scanf 我用了&,我是故意的。当时程序莫名出错,那是我绝望中胡乱尝试的改变。运行后没变化所以我就没改回来了。不过谢谢提醒。
嗯 strlen是不会计算'\0'的
本回答被提问者采纳