プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : C++)
C++のfopenについて
投稿日時: 18/08/29 15:24:59
投稿者: さまよえる蒼い弾丸

初心者です。
ファイルの入出力のサンプルプログラムを実行しますと
c:\users\z28994zz\source\repos\test01\test01\01.cpp(9): error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  c:\program files\windows kits\10\include\10.0.17134.0\ucrt\stdio.h(208): note: 'fopen' の宣言を確認してください
c:\users\z28994zz\source\repos\test01\test01\01.cpp(6): warning C4101: 'str': ローカル変数は 1 度も使われていません。
とエラーが出て進みません。
何が悪いのかさっぱり解りません。違う形でもやってみましたが
なぜか「fopen」でエラーが出てしまいます。教えていただけないでしょうか。
 
−−以下コード−−
#include <stdio.h>
 
int main() {
    //ファイル構造体へのポインタを宣言
    FILE *fp;
    char str[256];
    
    //ファイルを書き込みモードで開く
    fp = fopen("c:\\test", "w");
    
    //ファイルオープンに失敗した場合
    if (fp == NULL) {
        //失敗と表示し終了
        printf("ファイルオープン失敗\n");
        return -1;
    }
    
    //ファイルを閉じる
    fclose(fp);
    return 0;
}

回答
投稿日時: 18/08/29 17:21:51
投稿者: sk

引用:
error C4996: 'fopen':
This function or variable may be unsafe.
Consider using fopen_s instead.

fopen 関数ではなく fopen_s 関数を使用して下さい。
 
引用:
何が悪いのかさっぱり解りません。違う形でもやってみましたが
なぜか「fopen」でエラーが出てしまいます。

「 fopen はセキュリティ的に安全ではない関数なので、
(セキュリティが強化されている)fopen_s 関数の使用を
検討して下さい」とコンパイラが警告を発しているため。
 
MSDN より:
https://msdn.microsoft.com/ja-jp/library/ttcz0bys.aspx
 
JPCERT コーディネーションセンター より:
https://www.jpcert.or.jp/sc-rules/c-msc24-c.html

投稿日時: 18/09/07 11:31:08
投稿者: さまよえる蒼い弾丸

助かりました。有難う御座います。