我是C语言的新手。在使用 puts 和 printf 时遇到了一些问题。
char str[10];
printf("Input a string.\n");
gets(str);
printf("The string you input is: %s",str);
如果我输入的字符数超过10个,输出结果如下。
1ang:lab lang$ ./exercise
Input a string.
warning: this program uses gets(), which is unsafe.
0123456789
Abort trap: 6
但是当我在printf语句末尾添加\n
时,输出结果就会有所不同:printf("你输入的字符串是:%s\n",str);
1ang:lab lang$ ./exercise
Input a string.
warning: this program uses gets(), which is unsafe.
0123456789
The string you input is: 0123456789
Abort trap: 6
它会先打印字符串,然后发生错误。有人能解释一下吗?
fgets
而不是gets
。 - SKD