我在文本文件中有以下两行
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句