• ベストアンサー

Visual Stadio でのC言語ですが

すごい初歩的な質問で申し訳ないのですが 画面にabcdeと表示させるときに通常のコンパイラーだと getchar();と入れなくてもいいのですが VisualStdioだと、これを入れないとコンソール表示をしてくれません。 どうしてなのでしょうか? 決まりといわれてしまえばそれまでなのですが・・・ #include<stdio.h> int main(void) { printf("abcde\n"); getchar(); return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

それは、「デバッグ開始(F5)」をしている為だと思われます。コンソールがプログラムが終了直後に閉じてしまうので一瞬で表示が終了してしまいます。 「デバッグなしで開始(Ctrl+F5)」を選ぶと大丈夫ですよ。

tk516ncb
質問者

お礼

ありがとうございます。 確かに一瞬画面が表示されています。 普通にスタート(再生ボタンのようなもの)をそのまま押していたので デバックなしで開始をやってみたらうまくいきました。

その他の回答 (5)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

>getchar() はなぜ一時停止になるのでしょうか? キーボードから一文字を受け取るための関数です。 コンソールを出したまま文字の入力待ちするのでポーズになります。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.5

> getchar() はなぜ一時停止になるのでしょうか? 標準入力(通常はキーボード)から1文字の入力を受け取るからです。 入力がない場合は入力されるまで待機するので、一時停止しているように見えます。 > >コンパイルした実行ファイルをダブルクリックで実行する > この部分がいまいち分からないのですが補足していただければありがたいです。 正常にコンパイルできると、exeファイルが作成されているはずです。 コンソールアプリをエクスプローラなどから実行すると 出力の為にコンソールが開きます。(DOS窓、コマンドプロンプトなど) Windowsアプリの場合はコンソールではなくウィンドウが表示されることになります。 (不可視なウィンドウだったり、そもそもウィンドウを表示させないというのもある)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.4

>ただ、本に書いてあったのを打ってみただけだったのですが その本に何の説明もなくそう書いてあるのであれば、もっとマトモな参考書を探して下さい。

tk516ncb
質問者

お礼

本自体の評判は悪くなかったみたいなのですが・・・林さんのです (あくまでアマゾン評価ですが) Visual Stadioでの説明は冒頭1ページ程度しか割かれていなく(しかもあくまで画面のソースを見てみて、Visual Stadioだとこんな画面ですよーっていう導入の説明だったためですかねぇ、超初心者用だったので)、コンパイラをコマンドプロンプトで動かすというのを基本においていた説明だったとも思われます。

  • borazu
  • ベストアンサー率53% (8/15)
回答No.3

コンパイルした実行ファイルをダブルクリックで実行するので わざと getchar()関数を使用することによって、コンソールが一瞬で消えるのを防いでるだけなのではないでしょうか。 win2000,xpならコマンドプロンプト、win95, 98, MeならMS-DOSからコンパイルしたプログラムを実行してやれば問題ないと思います。

tk516ncb
質問者

お礼

ありがとうございます。 確かに、コマンドプロンプトを使えばいいですよね。 学校で知ってそうな人に聞いてみます。 ちょっと使い方がいまいち分からなかったので、 そのままVisual Stadioの機能を使っていました。 >コンパイルした実行ファイルをダブルクリックで実行する この部分がいまいち分からないのですが補足していただければありがたいです。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

getchar() は標準入力から文字を受けとるだけですが。 もしかして一時停止するために使ってるのかな?

tk516ncb
質問者

お礼

ありがとうございます。 getchar() はなぜ一時停止になるのでしょうか? ただ、本に書いてあったのを打ってみただけだったのですが

関連するQ&A

  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • C言語プログラミングについて

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • C言語について

    次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

  • C言語について

    #include <stdio.h> int main(void) { printf("123456\tABC DEFGHIJK\n"); printf("2006/4/14\n"); printf("programing\n"); } のprintfをすべてputsに書き換えてコンパイル・実行すると、 #include <stdio.h> int main(void) { puts("123456\tABC DEFGHIJK\n"); puts("2006/4/14\n"); puts("programing\n"); } になると思うんですけど、そのputsを用いて上のprintfを用いたプログラムと同じ出力を得るにはどのようなプログラムに変えればいいのでしょうか?

  • C言語エラー

    C言語をいじっているのですが、16行目と19行目の「型」の前に「;」がありませんと表示されます。 どこをどう改善すればいいか教えてもらえないでしょうか /*遊び半分*/ #include <stdio.h> #include <process.h> int main() { char dear; printf("ああああ\n"); printf("ああああ \n"); scanf_s("%c", &dear); switch (dear){ case 'A04': ; int main(void); { printf("ああああ\n"); int main(void); printf("あああ\n"); printf("あああ\n"); break; system("pause"); return 0; } case 'C34' : printf("\n"); break; case 'E24' : printf("\n"); break; case 'F38' : printf("\n"); break; default: printf("メッセージはありません\n"); break;} return 0;

  • C言語

    文を繰り返すときに、『続けますか(Y=続行。N=終了)』と表示して、Yが入力されたら文を繰り返すようにしたいのですが、わからないので教えてください。 #include<stdio.h> int main(void) { int m,s,r,num; char moji; num=1; do{ printf("距離を入力してください。\n"); scanf("%d",&m); printf("平均速度を入力してください。\n"); scanf("%d",&s); r=m/s; printf("所要時間は%dです。\n",r); printf("続けますか?(Y=続行。N=終了)\n");/*このあたりがどうすればいいのかわかりません*/ moji=getchar(); }while(num) printf("終了します。\n"); return 0; }

  • C言語

    forの直後で1+2+3+4+5+・・・・・・・と加算し続ける式がわからないので教えてください。 #include<stdio.h> int main(void) { char moji; int i,sum; printf("正の整数を1から順に加算します。n\"); printf("加算を開始してよろしいですか。(Y=実行。N=終了)\n"); moji=getchar(); if(moji==y) { for(i=2;sum>=1001;i++) { この部分がわかりません; printf("加算値は%dです。¥n",sum); } }else if(moji=='n'){ printf("終了します。\n"); }else{ printf("YまたはNを入力してください。\n"); } return 0; }

  • C言語

    以下の出力結果はどうなりますか? 教えてください。 #include <stdio.h> #include <stdib.h> int main (void){ int n,f; n=792; f=2; while(f*f<=n){ while(n%f==0){ printf("%d",f); n=n/f; } f++; } if(n !=1) printf("%d",n); printf("\n"); return 0; }

  • C言語 

    #include <stdio.h> int main(void) { int ch; int count = 1; while( (ch = getchar()) != EOF) { if(ch == '\n') count++; } printf("行数は%dです。", count); return(0); } このコードの if(ch == '\n') count++; の部分がわかりません。 aを入力したとしてchにaが入っても、a=='\n'にはならないと思うのですが、実行して見ると行数がカウントされます。 (ch=='\n')というのはchと改行が同じなら行数を1増やすと言う事になると思うのですがよくわかりません。 教えてくださいm(_ _ )m

  • c言語のフローチャートについての質問です

    #include <stdio.h> int main (void) { int n; for (n=1900; n<2000; n++) { if (n%4==0 && n%100!=10) printf ("%d",n); else if(n%400==0) printf ("%d",n); } printf("\n"); return 0; } をどなたかフローチャートに直してください JIS規格のものでお願いします

専門家に質問してみよう