我有一个要读取的文件,其格式为
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编程的新手,我该怎么做呢?
答案 0 :(得分:2)
现在您使用i
索引已解析的数字,但i
也是您的行索引。您需要一个单独的索引来跟踪已解析的数字。
int numberCount = 0;
...
strcpy(parsed[numberCount++],token);
...
for(i=0; i<numberCount; i++)
printf("%s\n",parsed[i]);