C 在空白处写入字符数组

C 在空白处写入字符数组,c,C,问题是在一行中输入n个元素,然后用c语言生成一个数组。输入的格式如下所示 输入: 15//元素数 1 4 2 3 5 6 x x x x 5 7//元素 我尝试使用scanf函数,但没有成功 char* tree; int n; scanf("%d", &n); tree = (char*)malloc(sizeof(char) * n); for (int i = 0; i < n; i++) { scanf("%c", &

问题是在一行中输入n个元素,然后用c语言生成一个数组。输入的格式如下所示

输入:

15//元素数

1 4 2 3 5 6 x x x x 5 7//元素

我尝试使用scanf函数,但没有成功

char* tree;
int n;
scanf("%d", &n);
tree = (char*)malloc(sizeof(char) * n);
for (int i = 0; i < n; i++)
{
    scanf("%c", &tree[i]);
}
char*树;
int n;
scanf(“%d”和“&n”);
tree=(char*)malloc(sizeof(char)*n);
对于(int i=0;i
这个代码有什么问题

  • 我也试过另一个版本
int*树;
int n;
scanf(“%d”和“&n”);
树=(int*)malloc(sizeof(int)*n);
对于(int i=0;i

但是我失败了,因为char“x”。

您的程序很好,唯一的问题是您似乎有15个字符以空格分隔作为输入,但您读取了前8个字符加上它们之间的7个空格。只要纠正扫描

scanf(" %c", &tree[i]);
另外,由于
n
将是一个小数字,我认为您可以安全地使用VLA

#include <stdio.h>

int main() {

    int n;

    scanf("%d", &n);

    char tree[n];

    for(int i = 0; i < n && scanf(" %c", &tree[i]) == 1; i++);

    return 0;
}
#包括
int main(){
int n;
scanf(“%d”和“&n”);
字符树[n];
对于(inti=0;i
的“1 4 4 2 3 5 6 x x x x 5 7”中大约有30个字符,而不是15个。尝试添加一个空格
scanf(“%c”和&tree[i])不扫描并保存空白。@chux,你说得对,我改变了
#include <stdio.h>

int main() {

    int n;

    scanf("%d", &n);

    char tree[n];

    for(int i = 0; i < n && scanf(" %c", &tree[i]) == 1; i++);

    return 0;
}