为什么没有得到字符?

时间:2019-12-27 12:17:05

标签: c

为什么这个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]);
    }
}

1 个答案:

答案 0 :(得分:5)

我认为问题很可能是您认为 Enter 键不会给您一个字符,但是会导致换行符'\n'

如果您想跳过换行符(或者实际上是任何空格),请使用scanf格式字符串中的前导空格:

scanf(" %c",&a[i]);
//     ^
// Note space here

如果要读取其他空格字符(例如“普通”空格或制表符),则需要使用诸如fgetcgetchar之类的字符读取功能之一。例如

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...
}