Добавьте слово в определенную позицию в непустом текстовом файле на языке Си

#c #file

Вопрос:

Я новичок в C, и я пытаюсь добавить слово «НИКОС», которое я хочу, чтобы оно было первым словом в моем текстовом файле, но моя проблема в том, что, когда я пишу слово в своем файле, это слово перезаписывается словом «мой», Как можно избежать этой ошибки?

Мой код :

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    FILE *fp;
    fp=fopen("file2.txt","w");
    if (fp==NULL)
    {
        printf("File does not exist");
        return 8;
    }
    
    char c;
    char *p[5]={"my","french","bulldog","barks"};
    char **p1;
    int num1=0;
    for(p1=p ; *p1 ; p1  )
    {
        fputs(*p1,fp);
        fseek(fp,1,SEEK_CUR);   //afino keno 
        } 
    
    fseek(fp,0,SEEK_SET);
    
    fputs("NIKOS",fp);
    fseek(fp,0,SEEK_CUR);
    
    
    
    
    return 0;
}
 

Комментарии:

1. Вставка произвольной длины текста в существующий файл в любом месте, кроме конца, как правило, не является чем-то, что вы можете сделать.

2. Если вы хотите заменить или вставить текст в текстовый файл, лучше всего переписать весь файл целиком. Распространенный метод состоит в том, чтобы скопировать все содержимое в новый файл, выполнив необходимые изменения, а затем переименовать новый файл как старый.

3. @ Какой-то чувак-программист, я думал передать все слова в массив и снова записать их в свой файл, но я бы подумал, есть ли другой подход

4. ОТ: Что вы собираетесь делать fseek(fp,1,SEEK_CUR) ?

5. Использование буфера в памяти вместо нового файла также работает. Но на самом деле другого способа сделать это нет. Если только вы не заменяете часть файла другой частью точно такой же длины.