EOFのエラーについて

このQ&Aのポイント
  • C言語のプログラムでEOFのエラーが発生し、解決方法がわからない場合の対処法について教えてください。
  • C言語のプログラムで読み込むファイルが終わったことを示すEOF(End of File)のエラーが発生し、どのように対処すればよいのかわからない場合について教えてください。
  • C言語のプログラムで、ファイルの終わりを示すEOF(End of File)のエラーが出た場合の対処方法について教えてください。
回答を見る
  • ベストアンサー

EOFのエラーについて

自分で考えてみたのですかどうもうまくいきません。 教えてください・ #include <stdio.h> int main () { int point[3][4]; int total[3]; int loop,loop1; for(loop1=0;loop1<3;loop1++) { for(loop=0;loop<4;loop++) { switch(loop1) { case 1:printf("A君\n");break; case 2:printf("B君\n");break; case 3:printf("C君\n");break; } printf("のゲーム%dの得点を入力してください\n",loop+1); printf("%d",&point[loop1][loop]); } } for(loop1=0;loop1<3;loop1++) { total[loop1]=0; for (loop=0;loop<4;loop++) { total[loop1]=total[loop1]+point[loop1][loop]; } printf("%4d",total[loop1]); } for (loop1=0;loop1<3;loop1++) { for(loop=0;loop<4;loop++) { printf("%4d",point[loop1][loop]); } printf("%4d",total[loop1]); } なんですがEOFのエラーと意味のわからない言葉でエラーがでるのですがいったいどうしたらいいんですか?

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

  • ベストアンサー
回答No.1

> ...なんですがEOFのエラーと意味のわからない言葉でエラーがでるのですがいったいどうしたらいいんですか? そのエラーを示さないと誰にも答えられません。 おそらく、閉じ括弧が足りないからでしょう。

kimaira
質問者

お礼

ありがとうございます。できました。

関連するQ&A

  • ファイルを利用してデータを入力する・・

    プログラミング初心者です。 本を使って学習しているんですが、書いてあるプログラムをやってみたんですが、上手くいきません。 「例外'System.NullReferenceException'がtest.exeで発生しました」とでます。 #include <stdio.h> int main() { int point[10][40]; int total[10]; int loop1,loop2; FILE *FP; /*ファイルを読み込み可能の状態にする*/ FP=fopen("test.txt","r"); /*ポイントの入力*/ for (loop2=0; loop2<10; loop2++) { for (loop1=0; loop1<40; loop1++) { printf ("背番号%2dの%d打席目のポイントを入力\n",loop2,loop1+1); fscanf (FP,"%d",&point[loop1][loop2]); } } /*ファイルの使用を終了する*/ fclose(FP); /*合計得点の計算*/ for (loop2=0; loop2<10; loop2++) { total[loop2]=0; { total[loop2]=total[loop2]+point[loop2][loop1]; } } /*結果の表示*/ printf ("ーーー結果ーーー\n"); for (loop1=0; loop1<40; loop1++) { for (loop2=0; loop2<10; loop2++) { printf ("%3d:",point[loop2][loop1]); } printf ("\n"); } printf ("---:---:---:---:---:---:---:---:---:---:---:\n"); for (loop2=0; loop2<10; loop2++) { printf ("%3d:",total[loop2]); } return 0; } という、テキストファイルからデータを入力するところなんですが、何処が違うのでしょうか? 教えてください、おねがいします。

  • 変わらない・・・。

    ↓のプログラムについて (1)break文をexit(0)とreturn(0)にするとどうなるか? (2)13行目と14行目にif(i>=n){break;}を入れるとどうなるか? *プログラムは書き換えてよい。 という問題なんですが私にはさっぱりです・・・。 #include<stdio.h> int main() { int i,n,total; while(1){ printf("整数n?");   scanf("%d",&n);     if(i>=n){break;} total=1; for(i=n;1<=i;i++){ printf("i=%d ",i); total*=i; } printf("total=%d\n",total); } printf("Thanks\n"); return(0) } できたら理由も教えてください。 よろしくおねがいします。

  • プログラムについて(C言語)

    #include<stdio.h> int main() { int i,n,total; for(;;){ /* 無限ループ*/ printf("整数n?"); /* nの値の表示 */ scanf("%d",&n); /* ifとbreakを使った終了判定 */ if(n<0)break; total=1; for(i=1;i<=n;i++){ printf("i=%d ",i); total*=i; /* total←total*i(階乗の計算) */ } printf("total=%d\n",total); /* totalの値(結果)の表示 */ } printf("Thanks\n"); /* 終了メッセージの表示 */ return(0); } これは階乗を求めるプログラムなのですが、i++ではなくi--をつかって求める場合 どのように変更すればよいでしょうか? for(i=1;i<=n;i++){ あたりをいろいろ弄ってみたのですが、求めてる結果は得られませんでした

  • エラーが出ます。

    「キーボードから受け取った整数が偶数か奇数かを表示するプログラムを、switch 文を使って作成する」 という問題で、プログラムを作ってみたのですが、エラーが出ます。 caseの後の%2==0 %2!=0の部分が間違っていると思うのですが、これは何と書けばいいでしょうか?偶数と、奇数の場合の条件の書き方はどうやるのでしょう? 回答お願いします。 #include<stdio.h> int main(void) { int a; scanf("%d",&a); switch(a) { case %2==0 : printf("%dは偶数です\n",a); break; case %2 != 0 printf("%dは奇数です\n",a); break; } }

  • 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言語について質問させて頂きます。 C言語の参考書を買って夏休み中にプログラムの勉強をしているのですが、何故動作するのかがわからない例があります、ソースは以下の通りです。 #include <stdio.h> int main(void) { int i,ch; int cnt[10] = {0}; while(1) { ch = getchar(); if (ch==EOF) break; switch(ch) { case '0' : cnt[0]++;printf("%d\n",ch);break;/* printfは確認の為 */ case '1' : cnt[1]++;printf("%d\n",ch);break; case '2' : cnt[2]++;printf("%d\n",ch);break; case '3' : cnt[3]++;printf("%d\n",ch);break; case '4' : cnt[4]++;printf("%d\n",ch);break; case '5' : cnt[5]++;printf("%d\n",ch);break; case '6' : cnt[6]++;printf("%d\n",ch);break; case '7' : cnt[7]++;printf("%d\n",ch);break; case '8' : cnt[8]++;printf("%d\n",ch);break; case '9' : cnt[9]++;printf("%d\n",ch);break; } } puts("数字文字の出現回数"); for(i=0;i<10;i++) printf("'%d':%d\n",i,cnt[i]); getchar();getchar(); return(0); } といったプログラムです。 実行し、数値を入力、CTRL+Zで入力を終了し、出現回数を表示させる、という動作自体は無事にできるのですが、何故chの値が変更していくのかがわかりません、数値を入力した時点で51や49といったそれぞれ違う数値が表示されるのですが、chの値を変更させる命令を、何が引き起こしているのかが理解できません、3(51)と判定されて同じ数が無限にカウントされないのは何故なのでしょうか・・・・? また、その後の無限ループからの脱出をCTRL+Zがどうして引き起こすのかも理解できず困っています、教科書には「CTRL+Zは入力の終了を意味する」とあるのですが、これは一体どういう意味なのでしょうか、強制的に割り込んでEOFを代入するということなのでしょうか・・・? お時間がある時にでも、教えて頂けると助かります、よろしくお願いします。

  • scanfに文字が入力されたときにエラー表示させる

    こんばんは.C言語勉強中です. 以下にsizeofを用いて各データタイプのサイズを表示させるプログラムを作りました.プログラム全文は下に貼付けました.これは,1-7までのいずれかの数字を入力すると,それに対応したサイズが表示されます.1-7以外の数字が入力されると,Type 1 - 7, please,と表示され,再び数字を入力出来ます.このプログラムは数字を入力している間はうまく機能していると思います. ただ,文字を入力すると無限ループに陥ってしまいます.僕は以下の scanf("%d",&typed); で10進数で読み込んで, if(typed<1 || typed >7) とすれば,文字も含めて全ての入力に対して排除できるかと思ったのですが,これではダメなようです. こういう場合,どうやって文字の入力に対するエラーを表示させるのが一般的なのでしょうか? 素人質問ですみません.よろしくお願いします. #include <stdio.h> #include <stdint.h> #include <Windows.h> int8_t main() { int typed; while(1) { while(1) { printf("Type the data type you wanna know the size of\n"); printf("char 1, short 2, int 3, long 4, long long 5, float 6, double 7: "); scanf("%d",&typed); printf("What you typed is %d\n",typed); if(typed<1 || typed >7) { printf("Type 1 - 7, please\n"); Sleep(1000); continue; } else { break; } } printf("Data size is "); switch(typed){ case 1: printf("%d\n",sizeof(char)); break; case 2: printf("%d\n",sizeof(short)); break; case 3: printf("%d\n",sizeof(int)); break; case 4: printf("%d\n",sizeof(long int)); break; case 5: printf("%d\n",sizeof(long long)); break; case 6: printf("%d\n",sizeof(float)); break; case 7: printf("%d\n",sizeof(double)); break; default: printf("Unexpected Value!\n"); break; } Sleep(2000); } return(0); }

  • c言語 

    答えを0にするこまち算のプログラムを組んでみたのですが、ここからどうしても進まなくなってしまいました。 自分ではいけるかなと思ったのですが、9-8-7+65-4321=9など答えがありえない数になってしまいます。 どこがいけないか教えてください。むしろ最初から組み直した方がよいのでしょうか… #include <stdio.h> int cul(); int num[9] ={9,8,7,6,5,4,3,2,1}; int total;/**/ int kigou[8]={0,0,0,0,0,0,0,0}; int main(){ for(kigou[0]=0;kigou[0]<3;kigou[0]++){ for(kigou[1]=0;kigou[1]<3;kigou[1]++){ for(kigou[2]=0;kigou[2]<3;kigou[2]++){ for(kigou[3]=0;kigou[3]<3;kigou[3]++){ for(kigou[4]=0;kigou[4]<3;kigou[4]++){ for(kigou[5]=0;kigou[5]<3;kigou[5]++){ for(kigou[6]=0;kigou[6]<3;kigou[6]++){ for(kigou[7]=0;kigou[7]<3;kigou[7]++){ keisan(); } } } } } } } } return 0; } int keisan(){ int n =0; int flag = 0; int t = 0; int i = 0; total = num[0]; /* for (n=0;n<9;n++) printf("kigou[%d] == %d",n,kigou[n]);確かめ*/ for(;n<8;n++){ if(kigou[n] == 0 && n == 0){ total = total * 10 + num[n+1]; for(flag=1;kigou[n+flag]==0 && (n+flag)<9 ;flag++){ total = total * 10 + num[n+flag+1]; } n = n + flag; } flag=0; if(kigou[n]!= 0){ for(flag=1;kigou[n+flag]==0 && (n+flag)<9 ;flag++){ t = num[n+1] * 10 + num[n+flag+1]; } n = n+ flag; total = total + t; } } /*0になる計算式の表示*/ kigou[8]=2;/*表示しないために空白を入れる*/ if(total==0){ for(i=0;i<9;i++){ printf("%d",num[i]); if(kigou[i]==0) printf("+"); if(kigou[i]==1) printf("-"); if(kigou[i]==2) printf(""); } printf("=%d\n",total); } return 0; }

  • C言語で得点分布のプログラムの間違いがわからない

    以下のプログラムでfor(i=0; i=<10; i++)が構文エラーだと言われてしまうのですが、間違いがわかりません。ご教示ください。 #include <stdio.h> void main(void) /*得点分布*/ { int i,dat,histo[11]; for(i=0; i=<10; i++) histo[i]=0; printf("得点を入力してください\n"); while(scanf("%d",&dat)!=EOF){ histo[dat/10]++; for(i=0; i=<10; i++) printf("%3d : %3d\n",i*10,histo[i]); }

  • 私はC言語を習い始めて5日の初心者です。

    私はC言語を習い始めて5日の初心者です。 下記のプログラムが動かないので優しく教えてください。 どうかお願いします。 #include <stdio.h> int main() { int ans1,ans; int total printf("コンビニ行くときは(1:車で 2:自転車で 3:歩いて)行く\n"); scanf("%d",&ans1); printf("1:汗かいた記憶がない 2:たまに汗かく 3:よく汗をかく\n"); scanf("%d",&ans2); total=ans1+ans2; if (total<4) { printf("運動不足です\n"); }else { printf("良く運動していますね\n"); } return(0); }

専門家に質問してみよう