c语言 gets的问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 11:34:44
有这个c的程序
#include <stdio.h>
main()
{char s1[10],s2[10],s3[10],s4[10];
scanf("%s%s",s1,s2);gets(s3);gets(s4);
puts(s1);puts(s2);puts(s3);puts(s4);
}
输入
aaaaa bbbbb ccccc回车
ddddd eeeee fffff回车
输出的是
aaaaa
bbbbb
fffff
ddddd eeeee fffff
不是应该输出

aaaaa
bbbbb
ccccc
ddddd eeeee fffff 么
哪位解释下。
但是s3没有越界啊,为什么s3不是ccccc呢?

char s1[10], s2[10], s3[10], s4[10];
数组定义的太小了,按照你目前的输入,s4已经越界了。

char s1[100], s2[100], s3[100], s4[100];
定义成这样再试试,我机器上并无异常。

因为你定义的是栈上创建的临时变量,具体的顺序是由编译器决定的,并不一定按照编码时的定义顺序,所以 s4 可以排在 s3 的前面。个人觉得会有这样的情况。