我正在尝试使用指针将字符保存到一个数组中,但是当我运行该程序时,它会保存除最后一个字符以外的所有字符,而是将其替换为随机字符。
代码如下:
#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/