【发布时间】:2016-10-28 14:55:41
【问题描述】:
我是 C 语言的新手,我正在阅读 Kim N. King 的一本书。它说 scanf() 寻找忽略空格的数字模式,但我认为它也会跳过 Enter 键。而如果它寻找字符,它显然也需要空格。
因此,在这个示例代码中,我必须在第二个scanf() 之前使用getchar() 清除流,否则将执行第二个而不等待用户输入。
printf("Enter a char: ");
scanf("%c", &ch1);
getchar();
printf("\nEnter another char: ");
scanf("%c", &ch2);
如果我改为寻找数字,我没有问题。
printf("Enter a number: ");
scanf("%d", &n1);
printf("\nEnter another number: ");
scanf("%d", &n2);
我的假设(它跳过 Enter 键)对吗?
【问题讨论】:
-
什么是“输入关键字”?换行符是空格之一。
-
空格不一定是单个空格。
isspace搜索空格,即换行符、回车符、换行符、垂直/水平制表符和单个空格(可能我忘记了一些)。 -
对不起,我的意思是输入键或返回键。我编辑它。
-
你的假设是错误的。不会从 C 流中读取“密钥”,因此永远不会被跳过。
标签: c whitespace scanf format-specifiers