2014-04-17 21 views
0

我试图读取文本文件并将结果保存到数组中。C中的数组文本文件

该文件具有以下格式:

DIM:8 15 POPS:2 DIM_POP:40 即:1 FRONTEIRA:1 K:50 50 MOVE:1 NUM_ITER:50

我试图将每个值保存到一个整数,但即时通讯有困难的时间分隔所有的值。 我现在的代码是这样的:

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); 

有些东西在那里只是用于测试。如何解决这个问题的任何提示?

回答

0

我建议使用mmap()只将整个文件映射到您的内存中,然后检查整个文件作为一个大字符串。这样,你已经消除了与固定大小缓冲区相关的所有问题。

一旦将虚拟地址空间中的所有数据都包含在内,就可以通过它来确定实际需要多少存储空间,进行分配,然后将所有内容解析到已分配的存储空间中,并知道所有数据都会适合。这消除了另一大问题。

实际的解析是非常简单的,只是遍历解析它们的NAME: numbers组合,直到你到达最后。