首页 文章

用C语言将char数组转换为int 2d数组

提问于
浏览
1

我有一个由索引和值组成的无限数量的“情侣”的字符数组,由分号分隔 . 每个索引都用逗号分隔 .

例:

char srt[50] = "1,3; 2,4; 0,-2; 3,11";

(“index1,value1; index2,value2; ...”)

我想将char数组转换为2d int数组,如下所示:

int num[4][2] = {{1,3}, {2,4}, {0,-2}, {3,11}};

怎么样?

1 回答

  • 1

    希望不要因为做功课而投降,但我只是花了一些时间来编写代码 . 方法是首先计算(可能的)对的数量(分号1的数量),以便保留适当的数组 . 然后,使用带有 strtok 的循环来分隔对,使用 sscanf(str, "%d,%d",..) 来读取值 . 请注意,由于解析对时失败,实际对的数量可能与最大对数不同:

    int main()
    {
        char srt[50] = "1,3; 2,4; 0,-2; 3,11";
    
        char* p=srt;
        size_t pairsCount = 1;
        while (*p) {
            if (*p++ == ';')
                pairsCount++;
        }
    
        int pairs[pairsCount][2];
    
        p = strtok(srt, ";");
        pairsCount = 0;
        while (p) {
            int key = 0, value = 0;
            if (sscanf(p, "%d,%d", &key, &value) == 2) {
                pairs[pairsCount][0] = key;
                pairs[pairsCount][1] = value;
                pairsCount++;
            }
            p = strtok(NULL, ";");
        }
    
        for (int i=0; i<pairsCount; i++) {
            printf("%d,%d\n", pairs[i][0], pairs[i][1]);
        }
    
        return 0;
    }
    

相关问题