我正在尝试读取文本文件并将结果保存在数组中。
文件的格式如下:
昏暗:8 15POPS:2DIM_POP:40即:1FRONTEIRA:1K: 50 50移动:1NUM_ITER:50
我试图将每个值保存为int,但我很难将所有值分隔开。我现在的代码是:
int dim_linha = 0, dim_col = 0, pops = 0, dim_pop = 0, viz = 0, fronteira = 0, k1 = 0, k2 = 0, move = 0, num_iter = 0;
char dimL;
FILE *config;
char buf[100];
char* cfg[90];
//fread(buf, sizeof(char), sizeof(cfg), config);
while (fgets(buf, sizeof(buf), config) != NULL){
char *dimL = strtok(buf, "n");
}
fclose(config);
有些东西只是用来测试的。关于如何解决这个问题,有什么建议吗?
我建议使用mmap()
将整个文件映射到内存中,然后将整个文件作为一个大字符串进行检查。通过这种方式,您已经消除了与固定大小缓冲区相关的所有问题。
一旦你的虚拟地址空间中有了所有的数据,你就可以对其进行检查,以确定你实际需要多少存储,分配它,然后将所有的数据解析到分配的存储中,知道所有的数据都适合。这消除了另一大问题。
实际的解析非常简单,只需一个接一个地对NAME: numbers
组合进行迭代解析,直到到达最后。