質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

4回答

7282閲覧

なぜ visual studio ではscanfを使うとき#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?

hogehoge237

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

1クリップ

投稿2020/06/08 13:01

編集2020/06/09 12:41

なぜ visual studio ではscanfを使うとき#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2020/06/08 16:49

> 一応かいてみたのですが全然だめなので、間違ってるところを指摘してほしいです。 なにがどうダメなんでしょか。
episteme

2020/06/09 08:25

ハノイの塔は崩壊したのですか? この世の終わりですか?
fiveHundred

2020/06/09 08:27

全く違う質問にするのはやめてください。
episteme

2020/06/09 08:41

#define _CRT_SECURE_NO_WARNINGS しとかないと scanf 類の呼び出しがエラー扱いとなるから。
guest

回答4

0

なぜ visual studio では#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?

書きたくなければ書かなくても構いません。

投稿2020/06/09 08:27

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hogehoge237

2020/06/09 11:57

そういう回答はどうなんでしょうか?皮肉ですか? もしこの質問があなたを不快にさせたのならお詫び申し上げます。 しかしそうでないのならば、わざわざ回答していただかなくて結構です。
maisumakun

2020/06/09 12:24

> そういう回答はどうなんでしょうか?皮肉ですか? いえ、質問の前提がそもそも誤っている以上、そこを正さなければ話にならないのは間違いないです。
hogehoge237

2020/06/09 12:26

ならばそこを指摘すればよいのでは?(笑) なぜ、「書きたくなければ書かなくても構いません。」←このような皮肉ったらしいことをわざわざ書くのでしょうかわかりかねます(笑)
maisumakun

2020/06/09 12:28

皮肉だと解釈されてしまいましたか…
guest

0

ベストアンサー

_CRT_SECURE_NO_WARNINGSについては以下のリンク先に説明があります。
Unsafe CRT Library functions
Eliminating deprecation warnings

投稿2020/06/09 12:48

SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hogehoge237

2020/06/09 13:05

ありがとうございます。
guest

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

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hogehoge237

2020/06/09 11:48

えっ、なんかすみません。 ぼく友達にすすめられて初めてteratail使って質問したんですけど、なんか低評価がいきなりついて怖かったから質問編集して適当なのに変えちゃったんですけど、ご丁寧にソースコード張っていただいて申し訳ないです????  だけどこれを丸写しするのではなくepistemeさんのコードを参考にしてよく考えてみます。ありがとうございました。ベストアンサーにさせていただきます。
episteme

2020/06/09 15:31

> そこの部分のソースコードのおかしいところを指摘してほしいです デバッグの丸投げとか、こんなの低評価に決まってんじゃん。
hogehoge237

2020/06/10 07:28

そうですね。これからは質問の仕方に気をつけます????
kazuma-s

2020/06/10 08:24

これからではなく、今すぐ、この質問を編集して元に戻してください。
episteme

2020/06/10 08:28

↑同意。回答者に無礼だとは思わんのかな。
hogehoge237

2020/06/10 08:41

消しちゃったんで無理、ごめんなさいね(笑)
episteme

2020/06/10 08:43

編集履歴 #4 に残っています。掘り起こしなさい。
hogehoge237

2020/06/10 08:52

もう勘弁してくださいよぉ~丸投げの質問したやつのっけても意味ないでしょ。 私も途中で悪い質問の仕方だったと思ったので削除しようと思ったけど、ここのサイトは質問消せないみたいなので編集して変えたんですよ~???? このテラテイルっていうサイト使ったことなかったから質問の仕方も分からなかったので、そのせいでみんな嫌な思いするなら消した方がいいと思ってるので、残念ながら掘り起こすのは無理です。 epistemeさんには本当に申し訳なく思っています。
hogehoge237

2020/06/10 08:53

もう二度とこのサイト使いませんので許してください????
guest

0

おそらく、VisualStudioを使ってると思われますが、そいつにはデバッグ機能があります
止めたい行にブレークポイントを設定して、そこで実行を止め、変数の中身を見ることができます
また、そこから1行づつ実行させることもできます
そうやって、自分で想定している動作と違うところ、変数の値が違うところを見つけ、それを修正していきます。
そうやって、まずいところを特定していきましょう。

投稿2020/06/08 14:43

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問