C中scanf函数的格式说明符中%c规范之前的空格

Shu*_*bey 2 c scanf character format-specifiers

的时候,不包括%d和%C规范之间的空白在scanf函数的在下面的程序格式字符串,并在运行时间期间为"4小时"给输入,则输出是"整数= 4和字符= .

在这种情况下,变量"c"如何获取输入,如果我在%d和%c规范之间包含空格,它会有什么不同?

#include <stdio.h>

int main()
{
    char c;
    int i;
    printf("Enter an Integer and a character:\n");
    scanf("%d %c",&i,&c);
    printf("Integer = %d and Character = %c\n",i,c);
    getch();
} 
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 7

如果scanf()仔细阅读规范,大多数格式说明符会跳过前导空格.在标准C中,有三个不是:

  • %n - 到目前为止已经处理了多少个字符
  • %[…] - 扫描集
  • %c - 读一个角色.

(POSIX增加了第四个,%C相当于%lc.)

输入的空白字符(由指定的isspace)应当被跳过,除非转换规范包括[,c,C,或n转换说明.

添加的空间之间%d,并%c表示该整数被读取之后可选空格被跳过并且(未白空间)之前字符被读取.

  • @ Shubhamdubey2111答案在于"如果仔细阅读scanf()的规范,大多数格式说明符**(如%d)**都会跳过前导空格.在标准C中,有三个不能: (2认同)