求助,关于C语言中gets函数,和scanf函数,有示例~~~~~

不明白为什么会这样,求解答,求帮助~~~

gets函数接收了你第一次输完名字后按下的回车键,你可以在gets(student[i].name)前面在加一个getcgar(),或者直接在for语句体的第一行写fflush(stdin)清除输入缓冲区也行
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-03
scanf剩了个换行符没有读走,
被下一个gets读到了。

可以这样改:在scanf后加个gets读掉剩下的换行符就正常了。
也可以先用gets读输入电话号到字符串里,然后用sscanf从字符串里的读,就没有这样问题了。
第2个回答  2013-05-03
scanf函数不会舍弃最后的回车符(即回车符会残留在缓冲区中)。当第二次执行gets函数时,gets读到换行符就结束读取,执行下一个语句。于是出现上面的情况。
参考:http://wenku.baidu.com/view/6387198402d276a200292ebc.html
第3个回答  2013-05-03
gets()是用来输入字符串的scanf()则可以输入字符串也可以整形变量,格式就是跟上面的那些一样
第4个回答  2013-05-03
gets()接受了来自上面缓冲区的字符
第5个回答  2013-05-03
把gets(.......)换成scanf("%s",student[i].name)试试,
仅供参考
相似回答