【发布时间】:2017-06-11 20:22:06
【问题描述】:
所以我写了这段代码(忽略缓冲区溢出问题,因为这只是一个简单的例子):
#include<stdio.h>
int main(void){
int n;
char s[10];
printf("Enter a number: ");
scanf("%d",&n);
scanf("%s",s);
printf("%s",s);
return 0;
}
字符串不应该存储在数组中,因为输入缓冲区中应该有一个“\n”,因此应该终止 scanf("%s",s) 但事实并非如此。输出打印字符串。
【问题讨论】:
-
@xing 非常感谢。我不知道。
-
通常,它只会导致后续的
"%c"格式说明符出现问题,除非使用" %c"明确指示,否则它不会自动跳过前导空格。 -
"...因为输入缓冲区中应该有一个"\n"..." - 你从哪里得到这个想法?
scanf根本不关心\n。对于scanf\n只是另一个空白字符。 -
@AnT scanf 确实关心带有 %c、%n 和 %[ 的空格