scanf能不能与gets一起用

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;
}


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值