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

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

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

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

Q&A

解決済

2回答

3177閲覧

C言語でのループの抜け方

10veBambi

総合スコア13

C

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

0グッド

0クリップ

投稿2016/06/21 07:57

お世話になっております。
C言語を勉強し始めました。

キーボードでEnterキー(空文字)を入力したらループを抜ける処理を行いたいのですが上手くいきません。
ご教授お願い致します。

char click;
while (1){
printf(”Enterキーを押してください¥n”);
scanf(”¥n%s”,&click);
if (click != ’¥n’){
printf(”何も入力しないでください¥n”);
continue;
}else{
break;
}
}
}

Enterキー以外だと、何も入力しないでくださいと出て、Enterキーを押してくださいという表示に戻るのですが、Enterキーを押すと無限ループになってしまいます。

よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

まず、注意点ですが、char型変数の入力で%sを使ってはいけません。メモリ破壊を起こします。char型には%cを使ってください。


以下回答
scanf関数では空文字列の入力というのができません。
fgets関数を使うと良いです。fgets関数は改行までの1行を読み込むもので、空文字列(Enterのみ)の入力時は、入力バッファーに改行コード(\n)1個の文字列が格納されて返ってきます。

こんな感じになります。

C

1char buf[100]; 2while(1) 3{ 4 printf("Enterキーを押してください\n"); 5 fgets(buf, 100, stdin); 6 if(buf[0] != '\n') 7 { 8 printf("何も入力しないでください\n"); 9 continue; 10 } 11 else 12 { 13 break; 14 } 15}

投稿2016/06/21 08:31

catsforepaw

総合スコア5938

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

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

10veBambi

2016/06/21 08:40

ありがとうございます。 上手く作動致しました。 fgetsという関数があるのですね。 いろいろ勉強したいと思います。
guest

0

scanfのフォーマット文字列に問題があります。%cで受け取りましょう。

C

1scanf("%c",&click);

clickという変数が文字列ではなく1文字しか格納出来ないため、%sを受け取るscanfが正しく動作していません。また、%sを受け取るscanfにclickという1文字しか入らない変数を渡すのは**「非常に危険」**な状態です。理由は勉強してください。

投稿2016/06/21 08:26

編集2016/06/21 08:27
masaya_ohashi

総合スコア9206

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

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

10veBambi

2016/06/21 08:32

ご回答ありがとうございます。 試したところ、Enterキーで次に進むことが出来ましたが、 何かを入力してもループを抜けてしまいます。 何かを入力した場合、今まで出来てた動作を行いたいと思ってます。 二度手間ですが、よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問