如何在循环中使用scanf在c中获取char*数组

Ath*_*eel 0 c arrays newline scanf char

我想使用 获取char数组值scanf。我使用了这段代码:

    // get first array
    printf("first length:\n");
    scanf("%d", &f_l);
    printf("first number:\n");
    for(i=0 ; i<=f_l ; i++) {
        scanf("%c", &first[i]);
    }
    //start test
    printf("first number is:\n");
    for(i=0 ; i<=LEN ; i++) {
        printf("(%c | %d)", first[i],i);
    }
Run Code Online (Sandbox Code Playgroud)

但是当我打印数组时,我\n首先发现了 a ( first[0]),而其他字符则从 开始place[1]!为什么会这样,如何解决?

Har*_*ris 5

这是因为当您执行for时, a'\n'留在缓冲区中。scanf()f_l

使用尾随空格,它应该可以工作

for(i=0 ; i<=f_l ; i++) {
    scanf(" %c", &first[i]);
}
Run Code Online (Sandbox Code Playgroud)

  • @Atheel除了说“谢谢”之外,您还可以考虑[接受](http://meta.stackexchange.com/q/5234)一个对您有帮助的答案。:) (2认同)