我的程序正在读取包含一些信息(名称,产品,费率,时间)的txt文件。我需要复制最后两个并将它们写在其他地方。代码必须在C中。
这是我到目前为止所写的,但由于前两个字段(名称,产品)的随机长度,它无法正常工作。
int a=25;
while (!feof(fp)){
fseek(fp,a,SEEK_SET);
fgets(ratetime,100,fp);
fputs(ratetime,fp2);
a=a+40;
}
如果您已经知道文件的格式,可以使用fscanf
,如下所示:
FILE* fp = fopen("input_file.txt", "r");
char name[BUFFSIZE];
char product[BUFFSIZE];
int rate;
char time[BUFFSIZE];
while(fscanf(fp, "%s %s %d %s", name, product, rate, time) != EOF)
{
//copy them in a proper data stucture
}
fclose(fp);
编辑:BUFFSIZE
是字符串大小的上限,如果你知道的话。如果没有,你已经通过char读取char并解析它们
首先,阅读为什么(!feof(fp)) is always wrong。
这可以通过使用fgets()和while()
循环来代替:
fp = fopen(".\\somefilename.txt", "r");
if(fp)
{
while(fgets(line, sizeof(line, fp))
{
// parse line to ignore first two words using strtok() or strchr()
}
fclose(fp);
}fclose(fp)