回答受付が終了しました

VisualStudio2022 C言語 scanf("%s",a);などのように使用する際、警告が消えません。 調べて非推奨なのは理解し、scnaf_s()でなら警告は出ませんが、

C言語関連 | プログラミング321閲覧xmlns="http://www.w3.org/2000/svg">50

1人が共感しています

回答(3件)

~例~ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { char a[256]; (void)scanf("%s", a); } 《解説》 まず最初に上記の #define を記述します。(必ず先頭に書く) 次に、scanfの前に (void) を書きます。 《参考》 scanf は失敗する場合があるので本来は if 文で戻り値を確認すべきです。 if (scanf("%s", a) == 1) { //成功 } else { //失敗 }

NEW! この回答はいかがでしたか? リアクションしてみよう

SDLチェックをいいえにしても、警告は消えないようですね。でもビルドは出来る。チェックしないと、警告ではなくエラーになってビルドできません。 警告メッセージにあるようにソースコードの冒頭に次の行を入れれば警告は出なくなり、SDLチェックをいいえにしなくてもビルドできます。 #define _CRT_SECURE_NO_WARNINGS でも、scanf_s を使うほうが安全ではあります。

何の警告が出ているんですか? C6031 のscanfの戻り値が無視されたですか? 警告レベルがデフォルトでレベル3だと思いますが、 レベル2にしてはどうですか?