新しいプロジェクトで再利用する目的で古い C コード (以下にリスト) を調べていたところ、最後の return ステートメントを省略していたことに気付きました。奇妙な点は、ルーチンが完全に機能し、正しいファイル ポインターを返したことです。誰かが私にこれがなぜなのか説明できますか?
FILE* openforwrite(char *name, int binary)
{
//broken out from main to keep it tidy and allow multiple output files.
FILE *file;
//first see if it exists
file = fopen(name,"r");
if (file)
{ // it does, delete it
fclose(file);
if(remove(name)) bail("Output file already exists and cannot be deleted.");
}
//now lets re-create and open it for writing
if (binary)
file = fopen(name, "wb");
else
file = fopen(name, "w");
//check it actually opened
if (!file)
bail("Error opening output file.");
//and pass the pointer back
return file; // <-- I had omitted this line initially but the routine still worked
}