scanf能不能与gets一起用

来源:互联网 发布:windows 登陆服务器 编辑:程序博客网 时间:2024/06/02 21:28

gets函数可以一次接收一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入. 
而scanf函数接收的字符串不会含有空格,即遇到字空格时,认为字符串输入结束,也就是说空格是scanf默认的结束符号。 
scanf和gets不能混合使用,如果一个程序中用scanf的话,一般不能再用gets,反之亦然。

       当在scanf()后面使用gets()时,程序直接逃过gets()函数直接跳过的原因是,在结束前一个scanf输入时输入的回车被后一个gets输入时接受,也就是说前一个地方输入的“数据+回车”分别被两个地方接受。gets()遇到前面scanf()输入的回车时停止接收,gets()中的输入缓冲区没有数据。sanf()和gets()先后一起使用时会给造成一种似乎gets()没有被执行的假象。

下面程序就是错误使用sanf和gets。

#include "string.h";#include "stdio.h"int main(int argc, char* argv[]){char buffer[10];char test;scanf("%c", &test);printf("输入c完毕,开始输入buffer\n");    gets(buffer);printf("输入buffer完毕\n");return 0;}


原创粉丝点击