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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

3回答

627閲覧

【C言語】デバッグの開始方法を教えてください【visual studio 2022】

ddd

総合スコア1

C

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2022/09/27 11:19

デバッグの開始を押下しても開始されません。
ソリューションのビルドは成功している状態です。
コンソール画面?(黒い画面)は出ます。
数値を入力し、エンターを押しても結果が出ない状態です。
どうぞよろしくお願いいたします。
ソースコードは以下になります。
ーーーーーーーーーーーーーーーーーーーーーーーー
#include<stdio.h>

int main(void)
{
int data, sum;
int i;

sum = 0; for (i = 0; scanf_s("%d", &data) == 1; i++) { sum += data; } printf("number : %d\n", i); printf("sum : %d\n", sum); printf("average : %f\n", (double)sum / i); return 0;

}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

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

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

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

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

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

Bull

2022/09/28 07:15

scanf_s() による数値データの入力をどのように終了していますか? for ループは終了していますか? for ループを終了しないと、結果が表示されませんが。
guest

回答3

0

ベストアンサー

デバッグの仕方を知りたいというより、プログラムを実行させて計算結果を出力したい感じなので以下のように回答します。

プログラムは正常に動いています。
数値のみを入力しただけでは最初のfor文から抜け出せないためprintfまで処理が進まないのでコンソールは真っ黒のままです。
数値をいくつか入力した後に、適当に数値以外の文字を入れれば計算結果が出力されます。(aとかbとか)

質問者様のコードですと、for文を回す条件がscanf_sの戻り値が1の時であり、scanf_sの変換指定子が%d(10進数の整数)であるので、数値以外の文字を入れることで、scanf_sの戻り値(変換できたフィールド数)が0になり、forループの条件から外れるというわけですね。

投稿2022/09/30 01:24

編集2022/09/30 02:04
ALOHAMS

総合スコア195

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

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

ddd

2022/09/30 14:02

ALOHAMS様ありがとうございます! 丁寧に教えてくださり、とてもよく理解でしました! 【数値をいくつか入力した後に、適当に数値以外の文字を入れれば計算結果が出力されます。】 これが知らない内容で、すぐに解決できました。 入力がなければ、ループ終了と思っていました・・汗 当初は、コンソール画面に結果で出ないのでデバッグが出来ていないのだと思い、最初の質問になりました。 (教えていただくまでは、出来ていないと思っていたのです・・・。) デバック出来る=計算結果が出るという認識で、途中からは、ALOHAMS様のおっしゃるように計算結果を出力したいというように変わっていましたね‥汗。
guest

0

sum = 0;

のところの左側をクリックして、赤い印つけてから実行してみよう。

投稿2022/09/27 11:50

y_waiwai

総合スコア87774

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

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

ddd

2022/09/27 14:45

回答ありがとうございます! 赤い印を探すのに苦労しました(汗 赤印付ける⇒ステップオーバーで一つずつ進めてみました。 下記出力欄に計算されていました。 コンソール画面には、最終結果(printfの内容)は表示されない仕様なんですかね?
episteme

2022/09/27 22:10

赤丸(bread point)セットでもいいし、その行で右click"カーソルの直前まで実行"でもいい。
y_waiwai

2022/09/27 22:11

コンソールの出力はバッファリングされたりして、すぐにはでてこなかったりします かといって、コードが終了するとコンソール画面が閉じてしまいます プログラムの最後に無限ループを置いて、終了しないようにしてみてください
ddd

2022/09/28 10:06

episteme様 y_waiwai様  おかしなコードに何度もご回答ありがとうございます! 赤丸や直前まで実行、を試したのと、最後に無限ループを置いてみましたが、コンソール画面には黒い画面のままでなにも表示されない状態です。ソースコードは以下になります。実行結果をコンソール画面に表示するにはどうすればよいでしょうか? #include<stdio.h> int main(void) { int data, sum; int i; sum = 0; for (i = 0; scanf_s("%d", &data) == 1; i++) { sum += data; } printf("number : %d\n", i); printf("sum : %d\n", sum); printf("average : %f\n", (double)sum / i); for (i = 1; i > 0; i++) { printf("ok"); } return 0; }
Bull

2022/09/29 08:55 編集

追記・修正の依頼にも書きましたが、最初の for ループは終了していますか? 全く表示されていなければ、入力が終了していない可能性もあるかと。
ddd

2022/09/30 13:54

Bull様ご回答ありがとうございます。 気づくのが遅くなりました、申し訳ないです。 Bull様のおっしゃる通り、ループは終了していませんでした。 他の方が詳細な方法を教えてくださり、コンソール画面に結果を表示することができました。 たびたびのご回答ありがとうございました!! 終了させる方法を知らなかったです(入力がなければ、終了と思っていました。) 大学で使う独自のコンパイラ?ソフト?では結果は表示されていたので、同じと思い使っていました。 visual studioも使えるようにと思い、使いはじめたところでした・・(汗
guest

0

デバッグは開始しています。
一瞬で表示されて終了しているだけです

https://teratail.com/questions/99263

投稿2022/09/27 11:23

ozwk

総合スコア13528

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

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

ddd

2022/09/27 14:36

回答ありがとうございます! 実際は計算されていて、【画面に計算結果一瞬表示→計算結果表示の終了(コンソール画面は残ったまま)】ということですかね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問