出于某种原因,当我调用 fwrite() 时,它不会覆盖指针指向的文件。当我运行程序时,它显示文件的标签被用户指定的输入标签替换。在我使用单独的代码检查文件以查看当前标签后,标签根本没有被替换。我相信我使用 fwrite 的方式有问题,并认为它真的会覆盖文件。在这种情况下,标签是标题。这是代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "title.h"
char title[30];
char title1[30];
int main(int argc, char *argv[]){
FILE *fPtrs;
// print the current tag
fPtrs = fopen(argv[1],"r+b");
fseek(fPtrs,-125,SEEK_END);
fread(title1,1,30,fPtrs);
strncpy(title,title1,30);
printf("%s\n",title);
fclose(fPtrs);
// call to overwrite the current tag
fPtrs = fopen(argv[1],"w+b");
title_tag(fPtrs,argv[2]);
fclose(fPtrs);
// print the tag of the should be overwritten file
fPtrs = fopen(argv[1],"r+b");
fseek(fPtrs,-125,SEEK_END);
fread(title1,1,30,fPtrs);
strncpy(title,title1,30);
printf("%s\n",title);
fclose(fPtrs);
return 0;
}
#include<stdio.h>
void title_tag(FILE* fName, char title_s[]){
fseek(fName,-125,SEEK_END);
fwrite(title_s,1,30,fName);
}
这是我在大学里做的一个项目,我们被告知不允许使用 id3lib -.-