【问题标题】:How can I take this values to an array?我怎样才能把这个值带到一个数组中?
【发布时间】:2023-01-26 18:40:05
【问题描述】:

我正在尝试从终端获取此输入。

ARRAY [1,2,3,4,5,6]

并将数字传递给这样的数组。

else if (strncmp(input, "CONSTRUCT", 9) == 0) {
    printf("CONSTRUCT\n");
    // CONSTRUCT [value1,value2,value3,...,valueN]
    int i = 0;
    char *token;
    char *str = strdup(input);
    char **array = str_split(str, '[');
    char **array2 = str_split(array[1], ']');
    char **array3 = str_split(array2[0], ',');
    int array4[100];
    for (i = 0; i < 100; i++){
        array4[i] = atoi(array3[i]);
    }
    for (i = 0; i < 100; i++){
        printf("%d\n", array4[i]);
    }
    for (i = 0; i < 100; i++){
        root = insert(root, array4[i]);
    }
    printf("\n");
}

【问题讨论】:

  • 你忘了发布你的代码。
  • 这不是代码,而是来自用户的字符串,我想将这些数字放入数组中
  • 好吧......没有代码你什么也做不了:-)
  • 寻求调试帮助的问题通常应提供问题的minimal reproducible example,其中包括函数main和所有#include指令。这也允许其他人通过简单地使用复制和粘贴轻松地测试您的程序。
  • 您是否尝试过在调试器中逐行运行您的代码,同时监视所有变量的值,以确定您的程序在哪一点停止按预期运行?如果你没有尝试过这个,那么你可能想读这个:What is a debugger and how can it help me diagnose problems?你可能还想读这个:How to debug small programs?

标签: arrays c string


【解决方案1】:

在这里,您只需运行数组的末尾

       char** array3 = str_split(array2[0], ',');
        int array4[100];
        for (i = 0; i < 100; i++)
        {
            array4[i] = atoi(array3[i]);
        }

array3 的大小动态调整为数字数 + 1,但您尝试访问 100 个条目

您在列表的末尾放置了一个空条目,使用它

        int count = 0;
        for (i = 0; i < 100; i++)
        {
            if (array3[i] == NULL)
                break;
            count++;
            array4[i] = atoi(array3[i]);
        }
        for (i = 0; i < count; i++)
        {
            printf("%d
", array4[i]);
        }
        for (i = 0; i < count; i++)
        {
            root = insert(root, array4[i]);
        }
      

我看到你对空间的评论。此代码不适用于“CONSTRUCT”后的空格,那是因为

  scanf("%s", input);

读到第一个空格 - 你想要fgets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2017-11-14
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多