2017-08-23 10 views
-1

fclose()が呼び出された後にfwrite()を呼び出すと、vs2012はエラーをスローしませんでしたが、VS 2015ではエラーがスローされます。fwrite関数のvs2015とvs2012の相違

The error information capture in vs2015

コードは以下である:

int main() 
{ 
    FILE* m_pFile; 
    char* filePath = "D:\\test_vs2015.txt"; 
    fopen_s(&m_pFile, filePath, "w+"); 
    if (m_pFile == NULL) 
     return 0; 
    char* str = "strNum text"; 
    int flag = 0; 
    while (str[flag++] != '\0'); 
    int num = fwrite(str, 1, flag - 1, m_pFile); 
    int fcloseFlag = fclose(m_pFile); 
    if (m_pFile == NULL) 
     printf("m_pFile == NULL "); 
    else 
     printf("m_pFile != NULL "); 
    int writeNum = fwrite(str, 1, flag - 1, m_pFile); 
    return 0; 
} 
+5

'fclose'を呼び出した後に' fwrite'を呼び出すのは、未定義の動作です。 –

+1

* fclose()が呼び出された後にfwrite()を呼び出すと、*私は疑問を見ません。質問が「なぜ」である場合、答えは動作が未定義であるということです。あなたはこのような何かを無効にします、何が起こるかもしれないと言うことはありません。 – PaulMcKenzie

+0

ここに質問がありますか? – immibis

答えて

-2

ファイルクローズ機能が整数に戻らない、代わりに使用するブール値。

関連する問題