なぜ visual studio ではscanfを使うとき#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 08:25
2020/06/09 08:27
2020/06/09 08:41
2020/06/09 13:30
回答4件
0
なぜ visual studio では#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?
書きたくなければ書かなくても構いません。
投稿2020/06/09 08:27
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 11:57
2020/06/09 12:24
2020/06/09 12:26
2020/06/09 12:28
0
ベストアンサー
_CRT_SECURE_NO_WARNINGS
については以下のリンク先に説明があります。
Unsafe CRT Library functions
Eliminating deprecation warnings
投稿2020/06/09 12:48
総合スコア4079
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
世界の終焉は僕が止めてみせよう:
C
1#define _CRT_SECURE_NO_WARNINGS 2#include <stdio.h> 3#include <stdbool.h> 4 5#define HEIGHT 5 6#define TOWERS 3 7 8//Stack構造体 9struct Stack { 10 int stack[HEIGHT]; 11 int volume; 12}; 13 14//初期化関数 15init(struct Stack* tower) { 16 int i; 17 for (i = 0; i < TOWERS; i++) { 18 tower[i].volume = 0; 19 } 20} 21 22//push関数 23int push(struct Stack* tower, int number/*円盤の大きさ*/) { 24 tower->stack[tower->volume] = number; 25 tower->volume++; 26 return 0; 27} 28 29//pop関数 30int pop(struct Stack* tower) { 31 tower->volume--; 32 return tower->stack[tower->volume]; 33} 34 35bool enableStack(const struct Stack* fromTower, const struct Stack* toTower) { 36 /* 移動可能である条件に応じて返り値を返す */ 37 if ( fromTower->volume == 0 ) return false; // 空のタワーからは移動できない 38 if ( toTower->volume == 0 ) return true; // 空のタワーへは無条件で移動できる 39 if (fromTower->stack[fromTower->volume - 1] > toTower->stack[toTower->volume - 1]) 40 return false; 41 else 42 return true; 43} 44 45bool checkFinish(const struct Stack* tower, int blocks) { 46 //ブロックが初期状態と同じ状態かチェックする 47 return tower->volume == blocks; 48} 49 50//main関数 51int main() { 52 int i, j; 53 int count = 1; 54 int fromTower, toTower; 55 int blocks; 56 struct Stack tower[TOWERS]; 57 printf("3,4,5段から段数を選んでください:"); 58 scanf("%d", &blocks); 59 init(tower); 60 /*第1塔に決められた個数をスタックする*/ 61 for (i = 0; i < blocks; i++) { 62 push(&tower[0], blocks - i); 63 } 64 65 bool quit = false; 66 while ( !quit ) { 67 while (1) { 68 for (i = 0; i < TOWERS; i++) { 69 printf("%d:", i + 1); 70 for (j = 0; j < tower[i].volume; j++) { 71 printf("%d ", tower[i].stack[j]); 72 } 73 putchar('\n'); 74 } 75 printf("%d回目\n", count++); 76 printf("移動元と移動先の塔を入力してください。[? ?]:"); 77 scanf("%d %d", &fromTower, &toTower); 78 --fromTower; --toTower; 79 if ( enableStack(tower+fromTower, tower+toTower) ) { 80 push(tower+toTower, pop(tower+fromTower)); 81 } 82 else { 83 printf("移動不可です。\n"); 84 break; 85 } 86 87 //クリア判定をする 88 if ( checkFinish(tower+toTower, blocks) ) { 89 printf("クリア!\n"); 90 quit = true; 91 break; 92 } 93 } 94 } 95 return 0; 96}
投稿2020/06/09 08:50
総合スコア16612
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 11:48
2020/06/09 15:31
2020/06/10 07:28
2020/06/10 08:24
2020/06/10 08:28
2020/06/10 08:41
2020/06/10 08:43
2020/06/10 08:52
2020/06/10 08:53
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。