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

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

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

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

Q&A

解決済

3回答

190閲覧

visual stadio 2019 C言語

himari

総合スコア10

C

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

0グッド

0クリップ

投稿2019/07/04 01:44

編集2019/07/04 02:01

初心者です。
visual stadio 2019でC言語の学習を行っているのですが、よく警告が出ます。先ほどエラーではないので大丈夫と教えていただいたのですが、実行しようとしても、うまく表示されません。どのようにすればいいでしょうか。
まず、警告が出でもそのまま実行する方法が知りたいです。

たとえば、
#include <stdio.h>

int main(void)
{
int a, b;

puts("2つの整数を入力してください。"); printf("整数a:"); scanf("%d" , &a); printf("整数b:"); scanf("%d", &b); printf("aの値はbの%f%%です。\n", (double) (a*100)/b); return 0;

}
このようなプログラムをデバックからデバックなしで開始とすると、「ビルドエラーが発生しました。最後に成功したビルドを実行しますか。」とダイアログが表示されます。

質問がへたくそですみません。

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

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

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

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

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

jimbe

2019/07/04 01:51

具体的な内容が何もありませんので, 何も分からないと思います. どのような時にどんな警告が出るのか, どのようなコードを書いてどのように実行しようとして何が「うまく」表示されないのか, を追記されると良いと思います.
himari

2019/07/04 01:56

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

回答3

0

よく警告が出ます

その言い方は、「必ずではない」ということですか? ならば、出るときと出ないときの変化点を確認するのがまずやることなのかも。

VisualStudioのIDEで使っているなら可能性は低いと思いますが、あまりに理不尽なエラーが出るときには実はコンパイルするのとは別のソースを編集していた、なんていうミスもあり得ます。

あるいは、極端なプログラム、こんなのでエラーがでるかどうか確かめてみるというのも一つの手。

C

1int main(void){ 2 return 0; 3}

これでエラーになるとしたら、可能性として大きいのはプリコンパイルヘッダ云々、かな。

エラーではないので大丈夫

一般には大丈夫なんて言い切れません。警告は「エラーではない」ので、とりあえずコンパイルを完了させますが、それは「プログラムが意図通り動く」ということとは次元が違うので注意してください。「これは文法的には間違ってはいないけど、使い方がおかしいんじゃない?」と言っているのが警告です。無視しても絶対大丈夫、と言い切れるモノ以外は無視してはいけません。先の質問のscanf()の戻り値だけならまぁ無視しても大丈夫とは言えますが。
また、通常はOFFになっているはずですが、警告もエラー並に扱ってコンパイルを異常終了させる、というオプションもあります。もし、scanfの戻り値以外の警告やエラーが出ていないのなら、その点を確認してみることになりますが、現状どうでしょうか。

投稿2019/07/04 13:45

thkana

総合スコア7639

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

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

0

ベストアンサー

もし出ているエラーが

text

1error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

であるならば、プログラムの先頭 (#include <stdio.h>の前) に

c

1#define _CRT_SECURE_NO_WARNINGS

を追加してみてください。
それでエラーが出なくなると思います。

投稿2019/07/04 02:18

Bull

総合スコア986

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

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

himari

2019/07/04 06:57

ありがとうございます! これは何のためのコードなんですか?
Bull

2019/07/04 07:12

「scanf 関数は危険だから代わりに scanf_s 関数を使ってね」というエラーなんですが、_CRT_SECURE_NO_WARNINGS を定義するとそのチェックをしなくなります。詳細は "error C4996" で検索してみて下さい。 scanf 関数を使うならば、その危険性もちゃんと理解して使うべきではありますが、入門者にそこまで要求する必要はないと思いますので、とりあえずエラー回避の方法です。
Zuishin

2019/07/04 07:14

入門者には警告の握りつぶし方ではなく、scanf_s の使い方を教えるべきだと思います。
thkana

2019/07/04 13:53

これがベストアンサーということはつまり、「警告はエラーではないから大丈夫といわれた」からエラーを無視して動かないと悩んでいた、ということなのでしょうか?
pepperleaf

2019/07/04 14:03

不思議なんですが、質問は、"エラー"でなく、"警告"と書いてあります。で、警告ならば、コンパイルは通って、実行できると思いますが、"実行できません"、とあります。どういう事なんでしょう。 単なる質問ミス? あ、"警告の握りつぶし方ではなく、" こちらは、同意です。なぜ、警告なのかの説明が最初にあった方が、良いと思います。あと、エラーメッセージの見方も (なお、低評価は付けてません)
asm

2019/07/04 17:17

VCは、このセキュリティに関する警告に関しては基本的にエラー扱いします。 また、現在のところscanf_sについては標準規格では付録あつかいで実装している環境は少なく 学習段階に限り警告を潰してscanfを使った方がいいと私は思います。
Zuishin

2019/07/04 17:29

scanf_s が使えない、かつ自分で実装できない環境を視野に入れるのなら fgets を使うのが良いと思います。scanf を使っても良いのは学習段階ではなく、学習が進み、scanf で問題ないかどうか自分で判断できる状況に限ると思います。
guest

0

その警告やエラーをコピペして提示していただければ、修正法や対処法をお教えできるかもしれません。
質問は編集できますので、追記していただければよろしいかと思います


画面の下の方にあるエラー一覧のウィンドウがあると思いますが、そこの文面をコピーして質問に追記しましょう

投稿2019/07/04 01:48

編集2019/07/04 02:18
y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問