繁体   English   中英

在C中创建动态二维Char数组

[英]Creating a Dynamic 2-D Char array in c

我在文本文件中有以下两行

4

oxd||987||ius||jjk

我想将数据存储在2维char数组中。 第一行基本上表示数组中的行数,并假设数组中的列固定为3。将根据||拆分数据。

那么我怎样才能声明这样一个动态数组。

在C语言中,这没问题-您有VLA。 就像是:

fgets(buf, sizeof buf, stdin);
int rows = strtol(buf, NULL, 0);

要获取行数,然后:

char array[rows][3];

这样就完成了。 这是一个完整的示例(很好,没有错误检查),展示了根据您的输入如何使用它:

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

int main(void)
{
    char buf[100];
    fgets(buf, sizeof buf, stdin);

    int rows = strtol(buf, NULL, 0);
    char array[rows][3];

    fgets(buf, sizeof buf, stdin);

    char *s = strtok(buf, "|");
    for (int i = 0; i < rows; i++)
    {
        strncpy(array[i], s, 3);
        s = strtok(NULL, "|");
    }

    for (int i = 0; i < rows; i++)
    {
        printf("%.3s\n", array[i]);
    }

    return 0;
}

运行和输出示例:

$ make example
cc     example.c   -o example
$ ./example < input
oxd
987
ius
jjk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM