在C中删除没有临时文件的行

时间:2018-12-28 23:57:17

标签: c file-handling

我正在尝试通过将下一行替换为下一行来删除给定的行,但它没有任何改变

int i=0,n,j,p;
char s[80];
FILE *fp;
scanf("%d",&n);
fp = fopen("test.txt","r+");
while(fgets(s,sizeof(s),fp)!=NULL){
    i++;
    if(i==n)
        break;
    j = ftell(fp);
}

while(fgets(s,60,fp)!=NULL){
    p = ftell(fp);
    fseek(fp,0,j);
    fprintf(fp,"%s",s);
    j = p;
    fseek(fp,0,SEEK_CUR);
}
fclose(fp);

1 个答案:

答案 0 :(得分:2)

您在fseek(fp, 0, j);中使用了错误的参数。第三个参数必须是SEEK_xxx常量之一,因此它应该是fseek(fp, j, SEEK_SET);