通过文件指针插入文件内容

fseek(pf, -10, SEEK_END);

如果是这样的话,那么他所移动到的位置,右边有10个数字。

1.对文件基本操作

FILE *pf = fopen(path, "r+");  //文件指针在头部,不清空原来的内容。

FILE *pf = fopen(path, "w+");  //文件指针在头部,会清空原来的内容。

FILE *pf = fopen(path, "a+");  //尾部添加,文件指针会被移动到尾部。

2.文件指针不同操作符

  • FILE *pf = fopen(path, "r+");

    fseek(pf, -10, SEEK_END);  

    fputs("abcdef", pf);

    //指针可以被移动到添加到指定的位置,但是不是插入,它会将文件中该位置正向同样大小的内容给替换了,就不是插入了。

  • FILE *pf = fopen(path, "w+");

    fseek(pf, -10, SEEK_END);  

    fputs("abcdef", pf);

    //使用w+,会将原文件全部清楚,然后再写入。

  • FILE *pf = fopen(path, "a+");

    fseek(pf, -10, SEEK_END);  

    fputs("abcdef", pf);

    //fseek对指针的移动是无效的,人家依然会将内容添加到文件尾部。

2.利用文件指针对文件进行插入

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char path[150] = "C:\Users\sjx1\Desktop\a.txt";
    FILE *pf = fopen(path, "r+");//文件指针在头部,不清空内容
    fseek(pf, 0, SEEK_END);
    fputs("0000000", pf);
    fflush(pf);//刷新文件
    for (int i = 0; i < 10;i++)
    {
        fseek(pf, -7 - i - 1, SEEK_END);
        int ch = fgetc(pf);
        fseek(pf, -i - 1, SEEK_END);
        fputc(ch, pf);

        fflush(pf);//刷新文件
    }
    fseek(pf, -17, SEEK_END);//a+ 文件指针移动无效
    fputs("abcdefg", pf);
    fflush(pf);//刷新文件
    fclose(pf);
}
原文地址:https://www.cnblogs.com/sjxbg/p/5863463.html