C文件解析问题

时间:2014-12-02 01:49:02

标签: c file parsing

我有一个要读取的文件,其格式为

3%6%1

5%3%0

4%9%2

我需要一些格式,我可以保存每行的单独字段,就像我想的那样 我可以使用SOMETHING.num1 = 3创建一个typedef SOMETHING,SOMETHING.num2 = 6,SOMETHING.num3 = 1

这是我到目前为止所拥有的:

#define BUF 128 
#define LINES 100 

char line[LINES][BUF];

FILE *input = NULL; 
int i = 0;
int total = 0;

input = fopen("input.txt", "r");
while(fgets(line[i], BUF, input)) 
{
  /* get rid of ending \n from fgets */
  line[i][strlen(line[i]) - 1] = '\0';
  i++;
}

total = i;

printf("ORIGINAL READ:\n");

for(i = 0; i < total; ++i)
{
  printf("%s\n", line[i]);
}

printf("\nPARSED:\n");

char  *token;
char parsed[LINES][BUF];

for(i=0; i<total; i++)
{
  token = strtok(line[i], "%");

  while(token != NULL)
  {
    strcpy(parsed[i],token);
    token = strtok(NULL, "%");
  }
}

for(i=0; i<total; i++)
{
  printf("%s\n",parsed[i]);
}

问题是当我打印出我的解析数组中的值时,它似乎只有每行的最后一个值(即对于样本^它将输出1,0,2)。我是C编程的新手,我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

现在您使用i索引已解析的数字,但i也是您的行索引。您需要一个单独的索引来跟踪已解析的数字。

int numberCount = 0;

...
    strcpy(parsed[numberCount++],token);
...

for(i=0; i<numberCount; i++)
    printf("%s\n",parsed[i]);