在读取非空格字符或任何其他数据之前,scanf会跳过空格字符 格式说明符,如%d,%c,%s和所有其他格式说明符。我说的是第一次出现的空白字符而不是后续的字符。 例如,
#include<stdio.h>
#define N 10
int main(void){
char str[N];
scanf("%s",str);
return 0;
}
在这种情况下,scanf将跳过第一次出现的空格字符并阅读下一个字符 非空白数据然后如果它再次遇到空格字符,它将退出 读数。
答案 0 :(得分:3)
大多数scanf()
格式说明符会自动跳过前导空格。空格包含换行符 - 请参阅isspace()
。
三个例外是%c
,扫描集(%[a-z]
等)和%n
。
请注意,scanf()
格式字符串中的任何空格都是跳过可选空格的明确指示。也就是说,如果有空格,它将被跳过;如果下一个字符不是空格,则不会跳过空格但也没有错误。
isspace()
的POSIX页面错过了C标准中的一些信息:
标准空格字符如下:空格(
' '
),换页符('\f'
),换行符 ('\n'
),回车('\r'
),水平标签('\t'
)和垂直标签('\v'
)。在里面 “C”语言环境isspace
仅对标准空格字符返回true。
答案 1 :(得分:0)
如果您想在非空白区域之前阅读空白区域,则可能需要fgets
#include <stdio.h>
int main()
{
char n[10];
fgets(n,10,stdin);
printf("%s",n);
}
运行程序:
343 5 <<--Input
343 5 <<--Output