像空格这样的修饰符在 scanf 中有什么作用?
what do modifiers like whitespace do in scanf?
#include<stdio.h>
void main()
{
char a,b;
printf("enter a,b\n");
scanf("%c %c",&a,&b);
printf("a is %c,b is %c,a,b");
}
1.what 两个格式说明符之间的空格是否告诉计算机做什么?
2.do 除了 %c 之外的 %d 格式说明符在从那里读取之前清理输入缓冲区?
whitespace: Any whitespace characters trigger a scan for zero or more
whitespace characters. The number and type of whitespace characters do
not need to match in either direction.
"%d" 将跳过 whitespace 直到它找到一个整数。
"%c"读取单个字符(而space是一个字符,所以不会跳过)。
1.what does the whitespace in between the two format specifiers tell the computer to do?
格式字符串中的 Whitespace 告诉 scanf
读取(并丢弃)白色 space 字符直到第一个非白色 space 字符(保留未读)1。所以
scanf("%c %c",&a,&b);
将单个字符读入 a
(白色 space 或非白色),然后跳过任何白色 space 并将下一个非白色 space 字符读入b
。
2.do format specifiers like %d other than %c clean input buffer before they read from there?
不太清楚你的意思 - d
将跳过任何前导白色space 并从第一个非白色space 字符开始阅读,c
将读取下一个字符,无论它是否为白色space。如果指令失败,它们既不会刷新输入流,也不会写入目标变量(例如,如果输入流中的下一个非白色 space 字符不是数字,d
指令失败,并且与该指令对应的参数将不会更新)。
- N1570,§7.21.6.2,第 5 段:
“由 white-space 字符组成的指令是通过读取输入直到
第一个非白色 space 字符(保持未读),或者直到没有更多字符可以
被阅读。该指令永远不会失败。”
#include<stdio.h>
void main()
{
char a,b;
printf("enter a,b\n");
scanf("%c %c",&a,&b);
printf("a is %c,b is %c,a,b");
}
1.what 两个格式说明符之间的空格是否告诉计算机做什么? 2.do 除了 %c 之外的 %d 格式说明符在从那里读取之前清理输入缓冲区?
whitespace: Any whitespace characters trigger a scan for zero or more whitespace characters. The number and type of whitespace characters do not need to match in either direction.
"%d" 将跳过 whitespace 直到它找到一个整数。
"%c"读取单个字符(而space是一个字符,所以不会跳过)。
格式字符串中的1.what does the whitespace in between the two format specifiers tell the computer to do?
Whitespace 告诉 scanf
读取(并丢弃)白色 space 字符直到第一个非白色 space 字符(保留未读)1。所以
scanf("%c %c",&a,&b);
将单个字符读入 a
(白色 space 或非白色),然后跳过任何白色 space 并将下一个非白色 space 字符读入b
。
2.do format specifiers like %d other than %c clean input buffer before they read from there?
不太清楚你的意思 - d
将跳过任何前导白色space 并从第一个非白色space 字符开始阅读,c
将读取下一个字符,无论它是否为白色space。如果指令失败,它们既不会刷新输入流,也不会写入目标变量(例如,如果输入流中的下一个非白色 space 字符不是数字,d
指令失败,并且与该指令对应的参数将不会更新)。
- N1570,§7.21.6.2,第 5 段: “由 white-space 字符组成的指令是通过读取输入直到 第一个非白色 space 字符(保持未读),或者直到没有更多字符可以 被阅读。该指令永远不会失败。”