• ベストアンサー

scanf関数

scanf 関数を使って整数値を標準入力から1 回だけ読み込み、その値を int 型変数に格納してそのまま表示するソースを作りたいのですがcを初めたばかりなのでアドバイスいただけないでしょうか?

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

>整数値を標準入力から1 回だけ読み込み 整数値を読み込む、ということは、scanf() の第1引数は "%d" ですか? だとすると、atoi() を使わずにそのまま出力すればよいです。 それとも、scanf() で読み込むのは、「0~9の数字(数値じゃないですよ)」からなる文字列ですか? どういう形で入力内容を受け取るかによって、 scanf() の第1引数、第2引数の内容や、atoi() が必要かどうかが 変わってきます。

kazu3kikun
質問者

補足

返答遅くなって申し訳ございません。 頑張ってみて下記のように作ってみましたので間違いの指摘をよろしければしてもらえないでしょうか? int型変数に格納するという意味が理解できません。ほんとに初心者過ぎてイライラさせてしまうところもございますがアドバイスいただければ嬉しいです☆ #include <stdio.h> int main(void) { int x; printf("整数値を入力してください:"); scanf("%d", &x ); printf(" %d を表示中\n" , x); return 0; }

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.3

>下記のように作ってみました 修正するところは全くありません。

kazu3kikun
質問者

お礼

ほんとうですか?ありがとうございます☆正直自信がなかったので嬉しかったです☆C言語はどのように勉強していけばいいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

atoiという関数を使うといいですよ。

kazu3kikun
質問者

お礼

回答ありがとうございます☆ atoi関数を使わないでやる方法はありますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • scanf関数について(至急回答をお願いします!)

    大学1年の者です 学校のプログラミングIの宿題で、教科書(田中敏幸:著 C言語 プログラミング入門 コロナ社発行)の以下のプログラムを入力して、それが正しく実行できたか確認する、という宿題2つが出ました 1つ目の問題とそのプログラムが以下の通りです 問題:scanf関数を用いて整数型変数i, jとdouble型実数変数fに値を代入し、それぞれの値を画面に表示するプログラムを作成せよ [プログラム] /* Hello World 出力プログラム */ #include <stdio.h> int main(void) { int i, j; double f; scanf("%d %d %lf", &i, &j, &f); printf("i=%d j=%d f=%f\n", i, j, f); return 0; } これをデバッグ{デバッグなしで開始(H)}すると、黒い画面に何も表示されなかったのですが、この状態は正常でしょうか? それとも間違っているのでしょうか? プロンプトが関係するのでしょうか?(visual studioに書いたやつをそのままコピペしたため、文字がずれてますがご容赦ください) また、2つ目の問題とそのプログラムが以下の通りです 問題:scanf関数を用いてint型整数変数iとdouble型実数変数fに値を代入し、それぞれの値を画面に表示するプログラムを作成せよ ただし、scanf関数の前にプロンプトを表示させるためのprintf関数を置くこと。 [プログラム] /* Hello World 出力プログラム */ #include <stdio.h> int main(void) { int i; double f; printf("input integer -> "); scanf("%d", &i); printf("input real -> "); scanf("%lf", &f); printf("i = %d, f = %f\n", i, f); return 0; } これをデバッグ{デバッグなしで開始(H)}した結果、黒い画面に「input integer - >」とだけ表示されたのですが、この状態は正常でしょうか? それとも間違っているのでしょうか? これもプロンプトが関係するのでしょうか?(こちらもvisual studioに書いたやつをそのままコピペしたため、文字がずれてますがご容赦ください) よろしくお願い致します

  • 関数の値(scanf)

    初心者なもので、言葉の使い方を間違っていたら申し訳ありません。いいたいことが伝わればよいのですが…。 scanfに関して疑問に思ったことがあります。経験的なことなので、正しいかわからないです。次の(1)と(2)から(3)のことが正しいか教えてください。 (1) int a; do{ printf("整数を入力してください\n"); }while(scanf("%d",&a) ==0); printf("入力した数は、%dです",a) このとき、「(いかなる整数)+(ENTER)」を入力しても、do~whileのループを抜け出す。 (2)また、上のプログラムで、継続条件式の中身を  … }while(scanf("%d",&a)!=0);  … とすると、「(いかなる整数)+(ENTER)」を入力してもループが抜け出せない。 (3)したがって(1)と(2)から、scanf()は入力するだけで、値を真(1)を返す。

  • fgets関数とscanfについて

    fgets関数とscanfの意味が似ていると思うんですが、違いは何ですか? 例えば、fgets( str, 81, stdin ) は変数strに80文字制限で、標準入力から入力するという意味ですよね? scanf("%s",s)は変数sに文字列を入力するという意味ですよね? 意味が似てると思うんですが、実際は何が違うんでしょうか? 回答よろしくお願いします。

  • scanf関数の戻り値について

    --------------------------------------- #include<stdio.h> int main(void) { int dt; while(scanf("%d",&dt)==1){ if(dt==0){ printf("0は入力しないでください\n"); puts(""); } else if(dt<0){ dt=-dt; printf("入力値の絶対値は「%d」です\n",dt); puts(""); } else{ printf("入力値の絶対値は「%d」です\n",dt); puts(""); } } return 0; } --------------------------------------- 以上のプログラムについて疑問があります。 scanf関数の戻り値が1の間、繰り返すというもので、入力の時に整数入力ですが、あえて実数である1.1を入れたとします。 scanfの戻り値は1で、dtには整数部の1だけ設定されていたので、これでもうまくいくのかと思ったのですが、次の入力はscanfの戻り値が0になっていて出来ませんでした。 何故0になっているのかわかりません。 入力バッファに何か残ってしまっているということなのでしょうか? 以上教えていただけると嬉しいです。

  • 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を使用しております。

  • scanf()関数の使い方について

    はじめまして。 質問があります。 以下のコードを見てください。 ---------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(void) { int i; char buf[256]; int y; int m; int d; printf("文字列を入力してください:"); scanf("%s",buf); i = sscanf(buf,"%d/%d/%d",&y,&m,&d); //OK #if 0 i = sscanf(buf,"%d %d %d",&y,&m,&d); //NG #endif printf("日付 %d-%d-%d 戻り値i=%d\n",y,m,d,i); return EXIT_SUCCESS; } ---------------------------------------------------------------- 標準入力から日付を表す文字列「例:"2007/04/17"」を入力してbufに 格納したものをsscanf関数の第1引数に指定して、y,m,dを表示 させてみると、「i = sscanf(buf,"%d/%d/%d",&y,&m,&d)」では、 うまくyとmとdに日付が格納される(つまり、yに2007が入り、mには 04が入り、dには17が入る。)のですが、 「i = sscanf(buf,"%d %d %d",&y,&m,&d);」でbufに格納すると、 yにはうまく格納されるのですが、他のmとdには、うまく格納してくれ ません。これは、なぜなのでしょうか? ご教授お願いします。

  • scanf関数のループについて

    ソースコード---------------------------- #include<stdio.h> int main(){ int i; while(scanf("%d", &i) != 1){;} return(0); } -------------------------------------- 1が入力されるまで入力待ちになるようなプログラムを意図してるのですが、 このプログラムでは二回目以降の入力ができなくなってしまいます。 なぜでしょうか。 意図したようにプログラムが動作するにはどのように書き換えればよいのでしょうか。

  • scanfについて

    いつもお世話になっております ------------------------ #include<stdio.h> #include<stdlib.h> int main(void){ int age , kyoku; char buff[16]; while(age){ printf("0で終了/年齢を入力して下さい"); scanf("%d",buff); age = atoi(buff); if( age == 0 ){ printf("終了します\n"); break; } ・ ・ ・ ------------------------ 上記のプログラムは、 年齢を入力させて もしも0だったら処理を終了させるという プログラムです。(つもり) scanfで入力された値を いったんバッファに蓄えて atoiで整数に変換させているつもりなんですが 例えば、「20」と入力しても ageの値が0、buffの値がエラーになってしまいます どこがおかしいのが ご教授して頂けたら幸いです。

  • scanf関数のループについて

    ソースコード---------------------------- #include<stdio.h> int main(){ char c; while(scanf("%c", &c) != 1){;} return(0); } -------------------------------------- 入力された文字数が1文字でない間入力待ちになるようなプログラムを意図しているのですが、 例えばaと打ってもaaと打ってもプログラムが終了してしまいます。 意図したようにプログラムが動作するにはどのように書き換えればよいのでしょうか。

  • C言語の変数の型がわかりません

    C言語の変数の型がわかりません [int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. [long int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. のようなことが書いてあります. [int]と[long int]の違いは何ですか?