我有一个看起来像这样的文件:
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
}
请注意,我的文件中的行并不总是这么简单,这些只是我想要测试的示例行(回到行和行之间的第四行,提前读取等)。
有什么想法吗?
答案 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]
)并添加偏移量。