c语言 这里gets_s读取字符,输入A,能输出a[0]为A,而输入AB时,a[0]没有任何输出,什么原因?
2017-06-19 14:50
253 查看
C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:
方法一、在gets()前加fflush(stdin); //强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用 gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:
char str[100]={0};
do {
gets(str);
} while( !str[0] );
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:
方法一、在gets()前加fflush(stdin); //强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用 gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:
char str[100]={0};
do {
gets(str);
} while( !str[0] );
相关文章推荐
- 【C语言】从标准输入读取几行输入,每行输入都要打印到标准输出上,前面加上行号,并使此程序能够处理的输入行的长度没有限制。
- 【C语言】编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 【C语言】在字符串中找出第一个只出现一次的字符。 如输入“abaccdeff”,则输出'b'。
- 【C语言】从标准输入读取字符,并把它们写到标准输出,除了 大写字母转换成小写字母之外,其他的原样输出。
- 【C语言】从标准输入读取字符,所有非字母字符完全按照输入形式输出,字母字符在输出前加密
- 【c语言】编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出
- 【笔试题】C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。
- C语言 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 【笔试题】C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。
- 【C语言】在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出’b’
- C语言 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- C语言 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制
- 【C语言】在字符串中找出第一个只出现一次的字符,输入“abaccdeff”,则输出'b'
- C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'
- 【C语言】在字符串中找出第一个只出现一次的字符。 如输入“abaccdeff”,则输出'b'。
- 【c语言】编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。
- 【C语言】从标准输入读取字符,所有非字母字符完全按照输入形式输出,字母字符在输出前加密
- 【C语言】编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。
- C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'
- 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。