gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:48 26 4
gpt4 key购买 nike

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

代码如下:

#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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com