- ベストアンサー
簡単なscanf文が、わかりません。
charmer29-2の回答
キーを押して表示されたのは、所謂エコーバック文字でしょう。 まさかエコーバックなしでは使いにくいでしょう? 但し、一般的な環境では確かにEnterキーを押さないと入力が 有効にならないことは参考書のとおりでしょう。 尚、そのscanf()の入力待ちでアルファベットなどを入力するとdataに正しく入力できないのでご用心。
関連するQ&A
- "scanf"でエンターで改行させない方法
#include<stdio.h> int main(void){ int x; scanf("%d", &x); printf("%d\n", x); } scanfの入力カーソルの所で何も入力せずにエンターを押すと1行下にカーソル位置が行ってしまいます。 それをエンターを押してもカーソル位置を変えないようにしたいのですがどうすればいいでしょうか?
- ベストアンサー
- C・C++・C#
- scanf文がうまくいかないのですが・・・
下のようなプログラムを実行するとうまくいかないのですが、何故なのでしょう。 どうかお教えください。 #include<stdio.h> int main(void) { int i; char n; for(i = 0; i < 10; i++) { printf("nを入力してください>>>"); scanf("%c",&n); printf("%c\n",n); } return 0; }
- ベストアンサー
- C・C++・C#
- scanf()関数の使い方について
はじめまして。 質問があります。 まずは、以下のコードを見てください。 ---------------------------------------------------------------- #include<stdio.h> int main(void) { char c; int i; printf("0を入力すると終了します。\n"); while(1) { printf("文字を入力してください=>"); scanf("%c",&c); printf("入力した文字は %c です。\n",c); printf("数字を入力してください=>"); scanf("%d",&i); if(i==0) { break; } printf("入力した数字は %d です。\n",i); } return 0; } ---------------------------------------------------------------- 上のコードを実行すると、初回はscanf()はcharとintの両方とも 入力待ちになってくれるのですが、2回目以降はcharは入力待ちに なってくれません。これは、なぜなのでしょうか? ご教授お願いします。 現在VC++6.0を使用しております。
- ベストアンサー
- C・C++・C#
- scanfの後のfgetsについて
#include <stdio.h> int main(void) { char name[10]; int no; printf("ナンバーを入力してください: "); scanf("%d",&no); /* 35を入力 */ printf("文字列を入力してください: "); fgets(name,10,stdin); /*入力できない*/ return 0; } この例文だと、fgets関数が改行コードを読み取って、終了してしまい文字列入力が出来ないみたいなんですが、scanfの後にfgetsを使うような(scanfとfgetsの間にscanfの残した?改行コードを取り除く方法)処理はどのような方法があるのでしょうか? 試しにfgets文を2度書いたら思っていた動作をしてくれたのですが、はたしてfgets文を2度書くというような事をしていいものなのでしょうか?見た目もなんだか変な感じですし。。↓ #include <stdio.h> int main(void) { char name[10]; int no; printf("ナンバーを入力してください: "); scanf("%d",&no); /* 35を入力 */ printf("文字列を入力してください: "); fgets(name,10,stdin); fgets(name,10,stdin); /*入力できる*/ return 0; }
- ベストアンサー
- C・C++・C#
- scanf が無視されます
例えば下のようなプログラムを実行するとmain関数の scanf が無視 されてしまいますが何故なのでしょうか。コンパイラはLSI C-86試食版です。 ----------------------------- #include <stdio.h> int main ( ) ; void aa ( ) ; int main ( ) { int i ; aa ( ) ; printf ( " input i. \n " ) ; scanf ( " %d ", &i ) ; printf ( " i = %d\n ", i ) ; } void aa ( ) { int x, y ; while ( scanf ( " %d ", &x ) ! = EOF ) { y = x ; printf ( " y= %d\n ", y ) ; } } --------------------------------
- ベストアンサー
- C・C++・C#
- scanf()で、エラー対応
scanf()を使用して、入力で例えば「5462fa」数字ではなく文字を入力してしまった場合エラー(無限ループ)になりますが、 これをscanf()を使用したまま再入力を促すことが可能でしょうか?よろしくお願いします。 #include <stdio.h> int main(){ int a , kazu; for(a=0;a<1;){ printf("値入力せよー>"); scanf ("%d", &kazu); if( kazu >= 1 && kazu <=100 ){ a = a + 1 ; }else{ printf("1から100で入力せよ\n"); } } printf ("kazu = %d", kazu); return 0; }
- ベストアンサー
- C・C++・C#
- C言語でscanf()が先に実行されるのはなぜですか?
C言語でscanf()が先に実行されるのはなぜですか? #include <stdio.h> int main(void){ int intNum; printf("整数を入力してください:\n"); scanf("%d", &intNum); printf("入力値は:%d\n",intNum); return(0); }
- 締切済み
- C・C++・C#
- scanf関数について
scanfで数字を入力し「CTRL+D」で入力終了となるプログラムを考えています. 調べてみると以下の様なプログラムでは入力終了となります. #include <stdio.h> int main(void) { int a[256]; int i = 0; while(1) { printf("Input%d = ", i); if ( scanf("%d", &a[i]) == EOF || i > 255) { break; } i++; } return 0; } しかし,次の様にすると「CTRL+D」では終了しません. #include <stdio.h> int main(void) { int a[256]; int i = 0; while(1) { printf("Input%d = ", i); scanf("%d", &a[i]); <-----追加 if ( a[i] == EOF || i > 255) { <-----変更 break; } i++; } return 0; } この場合は,環境がUNIXのため「-1」と入力すると終了します. 2種類の違いが分かりません. 教えてもらえないでしょうか?
- ベストアンサー
- C・C++・C#
お礼
すばやい回答ありがとうございます。 エコーバック文字と言うのが勉強になりました。 文字入力すると、基本的にエラーなんですね。 ありがとうございました。