#include<stdio.h>int main(){ int a1, a2; char c1, c2; scanf("%d%d", &a1, &a2); scanf("%c%c", &c1, &c2); printf("%d %d %c %c ...
这是我遇到的情况,圈起来的地方读入时,会把前面箭头处读n时的回车读入,导致读取不正确,一般情况下,这种问题会出现在 d与 c搭配的情况下。 原因: 使用scanf从输入流缓冲区中读取数据,系统会把从键盘输入的字符先放入缓冲队列,直到键入回车键或者遇到文件结束符EOF时,再从输入缓冲区逐个读取字符 解决: ,用 c读入多余的回车符 ,在 c前面加上一个空格 ...
2020-03-19 22:14 0 1282 推荐指数:
#include<stdio.h>int main(){ int a1, a2; char c1, c2; scanf("%d%d", &a1, &a2); scanf("%c%c", &c1, &c2); printf("%d %d %c %c ...
scanf输入数据时遇到空格和遇到回车都会结束输入 如果我们想要输入一串字符如:Hello World! 打印出的结果只会是Hello,因为在Hello之后遇到了空格结束了输入. 那么如何解决这个问题呢? 这是一种正则用法,更多的用法日后再说. ...
今天做TJU的OJ ,其中一道题是先读入一个字符串,再读入一个整数,循环往复,直到字符串是空,也就是说回车键结束循环。 但是cin对空格和回车都不敏感,都不影响继续读入数据,所以需要一种新的方式检测回车。 方法一:利用getchar()函数 getchar()是stdio.h中 ...
当不支持gets时,getline又比较慢,可以使用scarf("%[^\n]s", str);来读入以换行表示读完的字符串,其中[^char]表示以char为结束。 ...
scanf和回车的关系: 先看一个我们经常使用的代码: scanf 的各种格式中,%d、%c、%s三种最常用,通常都是以回车作为一次输入的结束。由于对字符解析方式及字符特点不同(如数字中一般不会出现空格回车等特殊字符)不同,%d格式一般不会在连续输入时,遇到问题。而%s ...
scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。 gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串 ...
所以要读入含空格字符串,正确用法如下面: while(gets(a)!=NULL){..} 因为: EOF在scanf中被定义为-1, 对应ctrl+z。 而gets返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF ...
#include <stdio.h> int main() { char str[128]; scanf( "%[^\n]", str ); printf( "%s\n", str ); return 0; } scanf中的正则表达式 ...