-1
fclose()
が呼び出された後にfwrite()
を呼び出すと、vs2012はエラーをスローしませんでしたが、VS 2015ではエラーがスローされます。fwrite関数のvs2015とvs2012の相違
コードは以下である:
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;
}
'fclose'を呼び出した後に' fwrite'を呼び出すのは、未定義の動作です。 –
* fclose()が呼び出された後にfwrite()を呼び出すと、*私は疑問を見ません。質問が「なぜ」である場合、答えは動作が未定義であるということです。あなたはこのような何かを無効にします、何が起こるかもしれないと言うことはありません。 – PaulMcKenzie
ここに質問がありますか? – immibis