• 締切済み

c言語

-------------- int x; scanf(%d,&x); ・ ・ ------------- で、数値以外が入力されたときに警告するプログラムを作るには どうしたらいいでしょうか? よろしくお願いします。

みんなの回答

  • W_wind
  • ベストアンサー率45% (21/46)
回答No.1

下のサイトに載っていますよ。

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec05.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語で困っています。

    正の整数を入れたときに、階乗を求めるプログラムを作りたいのですが、 ↓のプログラムを起動させたら、最終的な答えが1(kaizyo=1)になって、非常に困っています。 何故なのでしょうか?それと、どこを直せばいいですか? #include<stdio.h> main() { int x; int kaizyo=1; printf("整数を入力して下さい:"); scanf("%d",&x); if(x<=0) { printf("値が不適当です。"); } else { while(x<1) { kaizyo=kaizyo*x; x=x-1; } printf("%dの階乗は%dです。",x,kaizyo); } }

  • C言語のポインタについての質問です。

    C言語のポインタについての質問です。 2つのプログラムを作り、片方で数値を入力し、 もう片方でその数値を読み取りたいと思っています。 数値入力のプログラムは次のようになっています。 #include<stdio.h> void main(void){ int A=1; int *p; p=&A; printf("%p\n",p); } この実行結果は「0012FF88」となりました。 次にこの「0012FF88」というアドレスを使って「1」を読み取る 別のプログラムを作りたいと思っています。 #include<stdio.h> void main(void) { int add; int a; printf("アドレスは?\n"); scanf("%x",&add);    //「0012FF88」と入力 a=*(int*)add; printf("%x---->%d",&add,a); } このようなプログラムを作ってコンパイルできたのですが、 実行してアドレスを打ち込むと「Win32の例外が発生しました」 となって実行できません。 何かよい方法やプログラムの問題などありましたら 教えて頂けませんか?

  • Visual C++ Express Edition 警告に関して

    Visual C++ Express Editionを導入して最近Cを学び始めたのですが、 Visual C++ Express Editionでコンパイルした際に警告がたくさん でてしまいます。エラーさえなければ実行はできるようですが、できれば警告もなくしないです。以下がソースファイルです。 #include <stdio.h> int main(void) { int x,y,z; z=1; for(;z == 1;){ printf("数値を入力してください:\n"); scanf("%d",&x); printf("数値を入力してください:\n"); scanf("%d",&y); printf("加算すると%d\n減算すると%d\n" "乗算すると%d\n除算すると商%dは余りは%d\n",x+y,x-y,x*y,x/y,x%y); printf("計算を続けますか?\n続けなるならば1を押してください:"); scanf("%d",&z); } return(0); } コンパイルをすると警告として以下がでました。 c:\program files\microsoft visual studio 8\vc\include\stdio.h(295) : 'scanf' の宣言を確認してください。 今回の例の場合の警告の解決方法と一般的に警告をどのように解決をすればいいのか(エラーだったら文法的に間違えているのだが、警告だと?)教えてください。

  • C言語のユーザ関数の問題の質問です。

    以下のような実行結果が得られるプログラムを作りたいのですが・・・。 数値入力==>3 数値入力==>5 数値入力==>1 数値入力==>2 数値入力==>4 数値入力==>-1 合計:15 ←メイン関数で表示。 int dat[10]; ←main関数で定義。 実際に作ってみました。 #include <stdio.h> int MyArraySum(int cnt,int *pt); void main(void) { int dat[10],gokei,indat; int i; printf("数値入力==>"); scanf("%d",&indat); gokei=0; while(indat!=-1 && indat<11) { printf("数値入力==>"); scanf("%d",&indat); } MyArraySum(indat,dat); printf("合計:%d\n",gokei); return; } int MyArraySum(int cnt,int *pt) { int gokei; gokei=cnt+*pt; return gokei; } どうやっても、合計が0になってしまいます。 ご教授お願いいたします。 ちなみにアドレス渡しでやることが条件なので*使ってます。

  • 猫でもわかるC言語の本で勉強された方教えてー;_;

    猫でもわかるC言語を勉強しています Microsoft Visual C++2008 Express Edition のバージョンのコンパイラで 第5章のscanf関数のところで困っていることになっていますsos 本の通りに /*scan01.c*/ #include <stdio.h> int main() { int seisu; printf("整数値を入力してください----125"); scanf("%d",&seisu); printf("あなたの入力した数値は%dですね",seisu); return 0; } と書いてビルドをしても警告1になります、あと /*scan01.c*/ #include <stdio.h> #define _CRT_SECURE_NO_DEPRECATE int main() { int seisu; printf("整数値を入力してください----125"); scanf_s("%d",&seisu); printf("あなたの入力した数値は%dですね",seisu); return 0; } と書いてもエラーや警告は0になるけどデバッグ→デバッグなしで開始でいつもどうりに画面に(コマンド プロンプト?っぽいやつに)出力をすると本の通りに 整数値を入力してください----125 あなたの入力した数値は125ですね とならず 整数値を入力してください----125 だけが出力されます(コマンド プロンプトに)・・・ みなさんはどうやって突破したの!?いや、されたのッ!!!それともいらってはいないんですけどコンパイラの設定が悪いんでしょうか?;_; 何をどこをヘルプしたらいいやら分かりません教えてください先輩僕は一体どうしたらいいの!!!! これ以降いっぱいscanfのこといっぱい出るのにぃ~~OTL←やっぱ僕これになるんでしょうかね・・。

  • C言語、ポインタについて。

    C言語初心者です。"やさしいC"などの入門書を呼んでいて「ポインタ」につまづきました。 別書を買ったり、サイトを見たりしたのですが、理解できませんでした。 "やさしいC"からの引用なのですが、 正: #include <stdio.h> int add(int *x1,int *x2,int a); int main (void){ int n1,n2,a,ans; printf("2科目分の点数を入力してください。\n"); scanf("%d",&n1); scanf("%d",&n2); printf("加算する点数を入力して下さい。\n"); scanf("%d",&a); ans = add(&n1,&n2,a); printf("%d点加算しましたので\n",a); printf("科目1は%d点となりました。\n",n1); printf("科目2は%d点となりました。\n",n2); } int add(int *x1, int *x2,int a){ *x1+=a; *x2+=a; } 誤: #include <stdio.h> int add(int x1,int x2,int a); int main (void){ int n1,n2,a,ans; printf("2科目分の点数を入力してください。\n"); scanf("%d",&n1); scanf("%d",&n2); printf("加算する点数を入力して下さい。\n"); scanf("%d",&a); ans = add(n1,n2,a); printf("%d点加算しましたので\n",a); printf("科目1は%d点となりました。\n",n1); printf("科目2は%d点となりました。\n",n2); } int add(int x1, int x2,int a){ x1+=a; x2+=a; } この2つの違いはなんでしょうか。 アドレスか、そうでないか、という違いはわかりますが、なぜ"誤"のコードだと正しく処理されないのかがわかりません。 教えてください、お願いします。 (「やさしいC」の回答より引用)

  • 5桁までの2進数を10進数に変換するプログラム(C言語)

    自分で、プログラムを作ったのですが、エラーがしこたまでます、どこがわりのか、みていただきたいのですが、どこが違うのでしょうか?よろしくお願いします。 #include<stdio.h> main() { int x; int a,b,c,d,e,f; printf("5桁までの数値を入力してください"); scanf("%d",&x); if(x>11111) printf(”警告5桁以上です。"); a=(x/10000); if(a!=0) x=x-10000; b=(x/1000); if(b!=0) x=x-1000; c=(x/100); if(c!=0) x=x-100; d=(x/10); if(d!=0) x=x-10; e=(x/1); if(e!=0) x=x-1; f=a*16+b*8+c*4+d*2+e*1; }

  • c言語超初心者です。教えてください

    基本的だと思いますが教えてください。 #include <stdio.h> int main(void) { int na, nb: puts("二つの整数を入力してください."); printf("整数A:”); scanf("%d",&na); printf("整数B:”); scanf("%d",&nb); printf("それらの平均は%fです。\n,(na+nb)/2.0); return(0); } これでintの形で最後のprintfが%fなのですがintは%dとなるはずなのですがこれは2。0という実数値で割るから答えは実数値になりますよ。という意味で%fとしたのでしょうか?確かにこうしないと正しい値がでてこないのです。教えてください。

  • C言語の簡単なプログラム

    簡単な足し算のみの電卓をC言語で作っています。 /が入力されるまで足し算を繰り返すものです。 コンパイルをして、足し算を繰り返すところまでは上手くいったのですが、 /を入力してのループの抜け方がわかりません。 #include<stdio.h> int main(void) { int x=0,z; printf("数値を入力\n"); printf("終了は/を入力\n"); printf("\n結果 %d\n",x); while(1){ scanf("%d",&z); x=x+z; /* 足し算の計算 */ printf("結果 %d\n",x); /* 現在の計算結果を表示 */ } printf("終了 結果: %d\n",x); /* 計算の終了、合計値の表示 */ return 0; } while文のなかにifでいれればいいのでしょうか? その場合、 if(z=='/') break; でいいんでしょうか? if文以外のやり方がある場合も教えていただけたらと思います。 よろしくお願いします。

  • C言語 プログラミングで行詰まりました…

    標準入力(キーボード)からi,jk,nの値を入力し、次の漸化式を計算し、X_0からX_nまで求めるプログラムを作成したいのですが、うまく表示されません。どかがおかしいのかご指摘お願いします。 <漸化式> X_n=(a+b)/X_(n-1) , X_0=c(n=0) ================================================================== #include<stdio.h> float f_X(int a,int b,float c) { float y; y=(a+b)/c; return y; } int main (void) { int number,i,j; float k,l,n,X; printf("i:"); scanf("%d", &i); printf("j:"); scanf("%d", &j); printf("k:"); scanf("%f", &k); printf("n:"); scanf("%f", &n); X=k; printf("X_0= %.6f\n",X); for(number=1;number<=n;number++) { l=f_X(i,j,X); printf("X_%d= %.6f \n",number,l); X=l; } return 0; } ===================================================================