首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

<C程序设计试题汇编>6.47gets函数的疑问解决方法

2012-03-03 
C程序设计试题汇编6.47gets函数的疑问代码:chara1[5],a2[5],a3[5],a4[5]scanf( %s%s ,a1,a2)gets(a3

<C程序设计试题汇编>6.47gets函数的疑问
代码:
        char   a1[5],a2[5],a3[5],a4[5];
        scanf( "%s%s ",a1,a2);
        gets(a3);gets(a4);
        puts(a1);         puts(a2);
        puts(a3);         puts(a4);

程序运行,输入:aa_bb <CR> (_为空格, <CR> 为回车)
cc_dd <CR>

程序输出:
aa
bb

cc_dd
前面的aa   bb没有问题,可后面的空行和cc_dd什么原因,不明白?
注:程序运行到最后有一个Debug   Error:
Run-Time   Check   Failure   #2   -   Stack   around   the   variable   'a4 '   was   corrupted.
我用的是VS2005

[解决办法]
aa bb后的回车读到a3
cc dd整个串读到a4
[解决办法]
scanf以输入缓冲区内的空白(空格,回车,tab)为结束标记,而gets以回车为结束标记。

用scanf输入后的回车会仍留在缓冲区内,而gets不会。

热点排行