用C(行)解析文件

时间:2016-02-15 03:10:17

标签: c string parsing pointers

我有一个看起来像这样的文件:

5
x=
6
y=

我想最初跳过第一行,解析第二行,然后返回第一行并strcat两个字符串。但是,我似乎无法做到这一点。

例如:

我有:

while(fgets(buffer,sizeof(buffer),file) != NULL) {

     fgets(buffer,100,file); //skip first line

     char * tempVar = malloc(sizeof(char)*10);

     strcpy(tempVar,buffer); //copy second line into tempVar

     rewind(file); //go back to first line? doesnt work

     //then strcat the two strings, so I get x=5

}

请注意,我的文件中的行并不总是这么简单,这些只是我想要测试的示例行(回到行和行之间的第四行,提前读取等)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用int fseek ( FILE * stream, long int offset, int origin ); int origin可以

的地方
SEEK_SET    Beginning of file
SEEK_CUR    Current position of the file pointer
SEEK_END    End of file *

因此,如果你知道偏移,你可以跳到任何你想要的地方。

编辑:

FILE* file = fopen(fileName, "r"); 
char line[256];

fgets(line, sizeof(line), file); //skip first
fgets(line, sizeof(line), file);
printf("%s", line);  //  prints x=
fseek ( file , 0 , SEEK_SET );
fgets(line, sizeof(line), file); 
printf("%s", line);  // prints 5

现在,如果你想循环,你需要在某处保存偏移量 为了跳回他们。您可以使用strlen()来执行此操作 在我的示例中缓冲区(char line[256])并添加偏移量。