从文件读取时忽略前两个单词

时间:2019-03-16 14:08:12

标签: c

我的程序正在读取一个txt文件,其中包含一些信息(名称,产品,费率,时间)。我需要复制最后两个并将它们写在其他地方。该代码必须使用C。

这是我到目前为止所写的内容,但是由于前两个字段(名称,产品)的随机长度,因此无法正常工作。

int a=25;
while (!feof(fp)){
    fseek(fp,a,SEEK_SET);
    fgets(ratetime,100,fp);
    fputs(ratetime,fp2);
    a=a+40;     
}

2 个答案:

答案 0 :(得分:0)

首先,请阅读 (!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)

答案 1 :(得分:0)

如果您已经知道文件的格式,则可以使用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是字符串大小的上限,如果您知道的话。如果没有,则说明您逐字符读取并解析它们