为什么这个for
只运行5次?因为它得到5个字符,然后停止。而且,如果我将i<10
更改为i<5
,它将只运行3次。
#include <stdio.h>
char a[1000];
int main()
{
char a[100];
for(int i=0;i<10;i++)
{
scanf("%c",&a[i]);
}
}
答案 0 :(得分:5)
我认为问题很可能是您认为 Enter 键不会给您一个字符,但是会导致换行符'\n'
。
如果您想跳过换行符(或者实际上是任何空格),请使用scanf
格式字符串中的前导空格:
scanf(" %c",&a[i]);
// ^
// Note space here
如果要读取其他空格字符(例如“普通”空格或制表符),则需要使用诸如fgetc
或getchar
之类的字符读取功能之一。例如
for (size_t i = 0; i < 10; ++i)
{
int c = getchar();
if (c == '\n')
continue; // Skip newline
if (c == EOF)
break; // Error or "end of file"
// Use the character...
}