Вопрос относительно обработки файлов (одновременная запись и чтение в текстовый файл)?

#c #file #text

#c #файл #текст

Вопрос:

Я пытаюсь написать код, в котором я могу заменить каждый символ в текстовом файле на ‘x’ в рамках одного цикла. Я не могу получить желаемый результат, а также выполнение условия ch! ==EOF приводит к бесконечному циклу.

 #include<stdio.h>

void main()
{
    FILE *fp;
    fp=fopen("text.txt","r ");
    char ch;
    int i=0;

    while(1)
    {
        if(i!=5)
        {
            ch=fgetc(fp);
            fseek(fp,-1,SEEK_CUR);
            fputc('x',fp);
            printf("%c",ch);
            i  ;
        }
        else
            break;
    }
    fclose(fp);
}
  

Ожидаемый результат: Привет
Фактический результат: Хииии

учитывая, что файл содержит текст «Привет»
С использованием компилятора GCC.

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

1. Ваш код выдает ожидаемый результат при компиляции с помощью команды gcc <Your C file> . Добавляли ли вы какие-либо дополнительные флаги при компиляции вашего кода?

2. @xing Большое вам спасибо. Сработало просто отлично.

3. @VietHTran На самом деле я использую CodeBlocks с компилятором gcc. (Не в Linux)