在寻求结束后,fwrite写入文件的末尾

时间:2015-04-20 20:02:18

标签: c fwrite fseek

我有一组列表项目,我读到了结构。此代码应替换现有项目。用户输入位置(1..n)并应替换相应的记录。但是它没有用,记录到文件末尾。怎么了?

int pos;
FILE* file = fopen("file.txt", "ab+");
scanf("%d", &pos);
Schedule sch = getScheduleRecord();
fseek(file, sizeof(Schedule) * (pos - 1), SEEK_SET);
fwrite(&sch, sizeof(sch), 1, file);
fclose(file);
break;

1 个答案:

答案 0 :(得分:2)

尝试“rb +”
“ab +”打开文件追加二进制文件,读写。只能在文件末尾写入。该文件将被创建 “rb +”在读取和写入二进制文件时打开文件。在读取和写入之间切换时,可以使用fseek()在文件中的任何位置进行读取或写入。文件必须存在或fopen将失败 “wb +”打开文件写入二进制文件,读写。将创建该文件,但如果文件存在,则将删除内容 但是,您可以将调用嵌套到fopen

FILE* file;
if ( ( file = fopen("file.txt", "rb+")) == NULL) {//open for read
    //if file does not exist, rb+ will fail
    if ( ( file = fopen("file.txt", "wb+")) == NULL) {//try to open and create
        //if file can not be created, exit
        printf ( "Could not open file\n");
        exit ( 1);//failure
    }
}