另外,scanf将接收到的回车扔回到缓冲区,gets将接收到的回车符号转变为\0存入str,使用gets不检查字符串是否超出大小,存在安全问题,建议用fgets
#include
<stdio.h>
#include
<string.h>
int main(void){
char str1[10]="aaaaaaaaa",str2[10]="bbbbbbbbb";
scanf("%s",str1);
// getchar();
gets(str2);
return 0;
}
这里面的getchar()就是为了接收扔回到缓冲区的回车,否则,str2只能接收到一个回车符。
5
scanf("%s",str1);
(gdb) s
abcdef
(gdb) p str1
$1 = "abcdef\000aa"
(gdb) p str2
$2 = "\000bbbbbbbb"
[
本帖最后由 pauljames 于 2011-9-9 06:47 编辑 ]