Я добавил дополнительный код и отредактировал пост. Если мы пытаемся писать одновременно, используя оба файловых указателя, оба пишутся, а файловые указатели обрабатываются независимо, и я думаю, что это правильное поведение.

дполагал, что fopen возвращает нулевой указатель, если файл уже открыт. Но, похоже, fopen не возвращает NULL, если файл уже открыт в режиме "w". Ниже приведен код, который я использовал, чтобы попробовать это, и я не получаю никаких ошибок. Я пробовал с mingw32, а также с компиляторами TDM-GCC-64. Если я не ошибаюсь, C ++ выдает ошибку, если файл уже открыт.

#include<stdio.h>
int main()
{
    FILE *fp1, *fp2;
    fp1=fopen("file1.txt", "w");

    fp2=fopen("file1.txt", "w");
    if(fp2==NULL)
    {
        printf("Error in opening file\n");
        return(0);
    }
//       Edit: added following code to check the behavior if write operation
// is performed simultaneously


    fputc('A', fp1);
    fputc('M', fp1);
    fputc('S', fp1);
    fputc('B', fp2);
    fclose(fp1);
    fclose(fp2);
    return(0);
}

Редактировать: Добавлен дополнительный код для записи некоторых данных в fp1 и fp2 и просмотра поведения. При выполнении файл file1.txt содержит данные «BMS» и, по-видимому, работает корректно, а fp1 и fp2 перемещаются независимо, как и ожидалось. Сначала AMS записывается с использованием fp1, а затем A заменяется на B с использованием fp2, а конечным выходом является BMS.

Ответы на вопрос(1)

Ваш ответ на вопрос