请问,为什么我不能用将文件跳过某段数据读取到缓冲区后删除文件再创建一个同路径同名文件后将缓冲区的数据写入到该文件的方法来删除文件中的指定段落


void delete_file_paragraphs(char* path,long head_offset,long trail_offset){
    FILE* fp=fopen(path,"rb+");//打开被操作文件
    /*先以长度不清零的方式打开被操作文件,用从头顺序读取的方式跳过要删除的区间,将读取到的数据存入缓存,删除被操作文件,以从头写入并创建文件的方式打开之前被操作文件的路径,将缓存数据写入文件,释放缓存*/
    if(fp!=NULL){
        fseek(fp,0,SEEK_END);//被操作文件偏移到文件尾
        long file_trail=ftell(fp);//保存了被操作文件尾的偏移量,和文件长度
        char* BUF_=(char*)malloc(sizeof(char)*(file_trail-head_offset));//建立缓存区用来保存文件数据
        long count=0;//计数变量
        long offset_CUR=0;//用于保存文件当前偏移量
        for(fseek(fp,0,SEEK_SET);file_trail!=offset_CUR;count++){
            if(offset_CUR==head_offset){
                fseek(fp,(trail_offset-head_offset),SEEK_CUR);
            }//跳过区间
            fscanf(fp,"%c",BUF_+count);//将从文件获取到的数据存入缓冲区
            offset_CUR=ftell(fp);//获取当前偏移量
        }//将文件指定内容写入缓存
        fclose(fp);//关闭文件
        remove(path);//删除文件
        fp=fopen(path,"w");//创建并打开文件
        //fp=fopen("C:\\Users\\user\\Desktop\\新建文本文档30.txt","w");
        for(count=0;count<file_trail-4;count++){
            fprintf(fp,"%c",*(BUF_+count));//从缓存向文件写入数据
            printf("%c",*(BUF_+count));
        }//将缓存数据写入文件
        free(BUF_);//释放缓存
        fclose(fp);//关闭文件
    }
}//根据段首和段尾的偏移量删除文件中的任意段落。形参1为被操作文件的路径,形参2为段落首部偏移量,形参3为段落尾部偏移量

/附上如上代码/

现象是执行前和执行后的文件内容没有变化,但是将第20和第21行改成——

//fp=fopen(path,"w");//创建并打开文件

fp=fopen("C:\Users\user\Desktop\新建文本文档30.txt","w");

——这样后,新建文本文档30.txt中的内容是正确的

那应该检查一下你传递的path到底是什么值了啊