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

标签 c arrays char newline scanf

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

    // 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);
    }

但是当我打印数组时,我在第一个位置(first[0])找到了一个\n,而其他字符从位置开始[1] 代替!这是为什么,如何解决?

最佳答案

这是因为当您为 f_l 执行 scanf() 时,缓冲区中留下了 '\n'

使用尾随空格,它应该有效

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

关于c - 如何在循环中使用 scanf 来获取 c 中的 char* 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32333581/

相关文章:

postgresql - 更新文本字段时在 postgresql 中插入换行符

c - K&R 反向抛光计算器中 buf 数组的用途是什么

c - 递归地从头开始写 ls

javascript - 在推送对象时,我得到的所有内容都是 NULL angular2+typescript

php 只获取数组中的值

arrays - 使用 loop 和 grep 处理子文件夹

c# - 字符转换与 Convert.ToChar()

c - memcpy() 修改客户端套接字文件描述符

c - 为什么我不必使用指针?

c - 通用列表操作函数是如何编写的?