fopen retorna ponteiro NULL se o arquivo já estiver aberto

Eu estava assumindo que fopen retorna ponteiro NULL se o arquivo já estiver aberto. Mas parece que fopen não retorna NULL caso o arquivo já esteja aberto no modo "w". Abaixo está o código que eu usei para tentar isso e não recebo nenhum erro. Eu tentei com o mingw32 e com os compiladores TDM-GCC-64. Se não me engano, o C ++ dá erro se o arquivo já estiver aberto.

#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);
}

Editar: Adicionado código extra para gravar alguns dados em fp1 e fp2 e ver o comportamento. Se executado, o arquivo1.txt contém os dados "BMS" e parece estar com o comportamento correto e fp1 e fp2 se movem independentemente conforme o esperado. Primeiro o AMS é gravado usando FP1 e, em seguida, A é substituído por B usando FP2 e a saída final é BMS.

questionAnswers(1)

yourAnswerToTheQuestion