c - 如何在循环中使用scanf使用C中的指针将字符保存在数组中

标签 c arrays loops pointers

我正在尝试使用指针将字符保存到一个数组中,但是当我运行该程序时,它会保存除最后一个字符以外的所有字符,而是将其替换为随机字符。

代码如下:

#include <stdio.h>

void inputCharArray(char *beg, char *end){
    char *current = beg;

    while (current != end) {
        scanf("%c ", current);
        current++;
    }
}

int main(void) {
    int size, position;
    position = 0;

    printf("Size of array: ");
    scanf("%d", &size);

    char letters[size];

    printf("Array: ");

    inputCharArray(&letters[0], &letters[size]);

    printf("%s", letters);

    return 0;
}

这是我运行程序时得到的结果:

Size of array: 3
Array: a s d

as▒

如有任何帮助或指导,我们将不胜感激。

最佳答案

没有 '\0' 字符串终止符写入 letters[]

main 中你需要

char letters[size + 1];          // allow for terminator

函数应该是

void inputCharArray (char *beg, char *end){
    char *current = beg;

    while (current != end){
        scanf(" %c", current);   // moved the space to other side of %c
        current++;
    }
    *current = '\0';             // added string terminator
}

我还将 scanf("%c ", current); 更改为 scanf("%c", current); 因为它正在读取 newline left in the buffer%d 格式说明符之后。

关于c - 如何在循环中使用scanf使用C中的指针将字符保存在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405712/

相关文章:

c# - 如何在不使用 new 关键字的情况下在 C# 中扩展数组

javascript - 循环遍历对象的嵌套数组

java - 在 Java 中获取列表中不存在于另一个列表中的下一个项目

C:从调用中替换表

c - fputc 与 C 中的 putc

arrays - 如何动态地将值推送到 QML 属性变体二维数组?

python - 迭代调用 stats.norm.pdf() 运行缓慢

我可以比较 float 并将其与 C 中的整数相加吗?

c++ - 在自己的 C++ 项目中使用 Simulink 生成的 C/C++ 代码

arrays - 我应该从结构和类切换到数组吗?