首页 > 解决方案 > 用空格写一个 char 数组

问题描述

问题是在一行中输入一些n个元素并用c语言制作一个数组。输入的格式是This。

输入:

15 //元素个数

1 4 4 2 3 5 6 xxxxxx 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]);
}

这段代码有什么问题?

标签: c

解决方案


一些更好的程序会是

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n = 0;
    int* numbers = NULL;
    
    printf("How many elements do you want to store:");
    do {
        if(1 != scanf("%d",&n)) {
            puts("error in scanf");
            n = 0;
        }

        if(n <= 0)
            printf("Enter a positive number:");
    }while(n <= 0);
    
    numbers = malloc(n * sizeof (int));
    
    if( numbers == NULL) {
        puts("malloc failed");
        return 0;
    }
    
    printf("\n Enter %d number of elements:", n);
    for(int i = 0; i<n;i++)
        if (1 != scanf("%d", &numbers[i]))
            printf("error reading input\n");

    printf("\n The Entered elements are: ");
    for(int i = 0; i < n; i++)    
        printf("%d ", numbers[i]);
    
    free(numbers);
    numbers = NULL;

    return 0;
}

推荐阅读