を使用して MSDN の例に基づいてファイルを読み込もうとしていますfopen_s
が、アクセス違反エラーが発生し続けます (通常のを使用してみましたが、同じメッセージが表示されました。エラーは関数内をfopen
指していますが、そうではありません。err
なぜこれが問題なのかわかりません:
char* Foo::readFile(const char* filename)
{
FILE* fp = NULL;
errno_t err = fopen_s(&fp, filename, "r"); // error points to this line
fseek(fp, 0, SEEK_END);
long file_length = ftell(fp);
fseek(fp, 0, SEEK_SET);
char* contents = new char[file_length + 1];
for (int i = 0; i < file_length + 1; i++)
{
contents[i] = 0;
}
fread(contents, 1, file_length, fp);
contents[file_length + 1] = '\0';
if (fp)
err = fclose(fp);
return contents;
}
改訂版でも同じエラーが発生します。
FILE* fp = fopen(filename, "r"); // error again points to this line
fseek(fp, 0, SEEK_END);
long file_length = ftell(fp);
fseek(fp, 0, SEEK_SET);
char* contents = new char[file_length + 1];
for (int i = 0; i < file_length + 1; i++)
{
contents[i] = 0;
}
fread(contents, 1, file_length, fp);
contents[file_length + 1] = '\0';
fclose(fp);
return contents;
私のファイルは、ソース ファイルに text1.txt および text2.txt として存在します。関数の呼び出し時:
char* fileData1 = readFile("text1.txt");
char* fileData2 = readFile("text2.txt");