关于scanf和printf字符串的问题
程序如下,运行环境为vc6:
int main()
{
char a[5];
char b[5];
while(1)
{
printf("input a:");
scanf("%s",a);
printf("output a:%s\n",a);
printf("input b:");
scanf("%s",b);
printf("output a:%s\n",a);
printf("output b:%s\n",b);
}
}
为什么我输入超过5个字符超过的部分还是会打印出来?还有,当b输入超过7个字符时a的内容也受到影响?
[解决办法]
楼主不要过分纠结结果。因为
char a[5];
char b[5];
只分别分配了5个元素的空间。你一下子输入多于5个则会发生数组越界,有可能操作系统分配空间是a,b是相邻的,所以a,b之间才会出现了影响。
你把改大点就没事了。
char a[500];
char b[500];
[解决办法]
scanf("%s",a);
应改为
fgets(a,5,stdin);if ('\n'==a[strlen(a)-1]) a[strlen(a)-1]=0;
scanf("%s",b);
应改为
fgets(b,5,stdin);if ('\n'==b[strlen(b)-1]) b[strlen(b)-1]=0;
[解决办法]