• ベストアンサー

C言語初心者の質問失礼します。

C言語初心者の質問失礼します。 プログラムを作って、cygwinでコンパイラしたのですが、以下のようなエラーメッセージが出てしまいました。 expected declaration or statement at end of input どのような意味なのか教えてください。 ばかみたいな質問でごめんなさい…。

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

  • ベストアンサー
  • emu0202
  • ベストアンサー率35% (5/14)
回答No.3

No. 1 No2 さんに同意です。 直訳すると「入力の最後で、declaration (宣言)もしくは statement (文)が期待されている」です。 文法上、宣言もしくは文のみが期待される場所というのは、複合文のカッコ { と } に挟まれた部分です。 また、ファイルの最後は、関数定義の閉じカッコのはずです。その場所で、宣言もしくは文が期待されるのは、本来おかしいです。 おそらく、プログラマの意図として関数の閉じカッコを書いたハズが、期待通りに関数の閉じカッコとして解釈されず、複合文の閉じカッコとして扱われてしまったのでしょう つまり、{ に対して } の数が足りないってことです。

bakunoyume
質問者

お礼

回答ありがとうございます。 コンパイラできました。 とても助かりました。感謝です。

その他の回答 (3)

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

そのソースコードを全部見せてください。

bakunoyume
質問者

お礼

回答ありがとうございます。

  • chie65535
  • ベストアンサー率43% (8465/19279)
回答No.2

エラーメッセージの意味は 「宣言やプログラム行の途中で、ソースファイル(input)が尽きて(at end)しまった」 って感じ。 ソースファイルが途中で切れてしまっているって事は滅多に無いので「{が多い」か「}が足りない」かのどちらかが理由で「フォースファイルが途中で切れているのと論理的に同じ状態」になっているのでしょう。

bakunoyume
質問者

お礼

尽きて(at end)だったのですね! 回答ありがとうございました。 コンパイラできました。皆様のおかげです。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

たぶん、 {    と    }   の対応が、どこかでくずれている可能性があります。

bakunoyume
質問者

お礼

お早い反応ありがとうございました。 コンパイラできました。 回答ありがとうございます。

関連するQ&A

  • cygwinwをC言語のコンパイラとして使う方法

    cygwinをダウンロードして、 さっそくCのコンパイラとして使おうと思って#include<stdio.h> int main(void) { printf("Hello, World!");} を、ダウンロードの際に作られたhomeというフォルダに入れて、 gcc hello.c (hello.cというファイル名にしました) と入力しましたが、 hello.c:3:28: warning: no newline at end of file と出てきてしまい、実行ファイルを作れませんでした。 どうやったらコンパイルができるようになるか、 どんなことでもいいので、ご存知の方、 どうか教えてください! (メモ帳、windowsXPを使っていて、 恥ずかしいことですが、バージョンはわかりません・・・ 超初心者です、ごめんなさい・・・)

  • C言語によるMYSQL接続

    質問させて頂きます。 今、現在MYSQL5.1とcygwinを使用しています。 cygwinのgccから、MySQLに接続して、データベースの値を表示させたり、cygwinのgccから、データベースにデータを登録させたりすることがWindows上で可能ですか? gcc等のコンパイラではなく、VisualC++などを使用しないとWindows上ではできないとも噂でききましたがどうなんでしょうか? もし、コンパイラとC言語で上記のことができるのなら、参考になるHPや基礎から説明しているHPなど教えてください。 どんなことでもかまいませんので、基礎から教えてください。 私の実力では参考になるHPなど探し出すことができませんでした。 よろしくお願いします。

  • C言語コンパイラに関して

    C言語の初心者です。 #1年くらいは触れているのですが。。 今までは、UNIX上(実際にはwindows上のcygwinですが。。)にてgccコンパイラにていろいろとやってきたのですが、そろそろWindowsプログラミングにチャレンジしてみたいと思っております。 そこで、現在チャレンジするにあたっての環境を構築しようと思っているのですが、windowsプログラミングにおける最適な?コンパイラは何になるのでしょうか?といっても各々長所・短所があって、質問がおかしいとおもっているのですが、実際のところVC++か、Borland Bccの2種類を考えております。とっつきやすい方?はどちらになりますでしょうか?ご意見を頂けると幸いです。また、学習するにあたって、お勧めのサイト等ございましたら、あわせてご教授お願い致します。 初心者で的外れな質問かと思いますが、どうかご教授・ご指導宜しくお願い致します。

  • 関数への構造体の配列の渡し方<c言語初心者>

    こんにちは、関数への構造体の配列の渡し方で理解できない点があるため、質問させていただきます。 以下がスクリプトになります。3人の名前と年齢をinput関数で入力し、それらのデータをoutput関数で出力するのが目的です。 #include <stdio.h> typedef struct{ char name[64]; int age; }property; void input(property *data[]); void output(property *data[]); int main(void){ property data[3]; printf("Input data of three people.\n"); input(&data); output(&data); return 0; } void input(property *data[]){ int i; for(i=0;i<3;i++){ printf("%d banme\n",i+1); printf("name:"); scanf("%s",&data[i]->name); printf(" age:"); scanf("%3d",&data[i]->age); } return; } void output(property *data[]){ int i; for(i=0;i<3;i++){ printf("%d banme\n",i+1); printf("name:%s\n",data[i]->name); printf("age :%3d\n",data[i]->age); } return; } コンパイル時のエラーメッセージは以下のようになりました。(ファイル名はstructure5.c) structure5.c: In function ‘main’: structure5.c:14:2: warning: passing argument 1 of ‘input’ from incompatible pointer type [enabled by default] input(&data); ^ structure5.c:8:6: note: expected ‘struct property **’ but argument is of type ‘struct property (*)[3]’ void input(property *data[]); ^ structure5.c:15:2: warning: passing argument 1 of ‘output’ from incompatible pointer type [enabled by default] output(&data); ^ structure5.c:9:6: note: expected ‘struct property **’ but argument is of type ‘struct property (*)[3]’ void output(property *data[]); ^ structure5.c: In function ‘input’: structure5.c:24:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[64]’ [-Wformat=] scanf("%s",&data[i]->name); ^ 構造体の配列をinput関数やoutput関数に渡すときにエラーが発生しているようなのですが、自分で調べても解決できなかったため、質問させて頂きます。 皆様のお知恵を貸してください。なおプログラミング言語自体初心者のため、できる限りわかりやすいお言葉でご教授願います。よろしくお願い致します。

  • 初歩的プログラミング(C言語)

    あるサイトを見つつ、C言語を学んでみようかと思い、コンパイルする直前までこぎつけました。 #include <stdio.h> void main () { printf("Hellow World!"); } とメモ帳などで打ち、 test.cとして保存しました。 cygwinでコンパイルしようとしたところ、 test.c:In function `main': test.c:4: warning:ruturn type of 'main' is not `int' と表示され、コンパイルできません。 他所でコンパイラの問題では?と言われていたのでVisual C++を使い、 ビルド、デバッグなしで開始、とすると Hello World! 続行するには何かキーを押してください... となり、成功しました。 Visual C++ を使えば問題ないのですが、どうしてcygwinではできないのか・・・と思いました。 そして確かに Visual C++で デバッグなしで開始 とすると実行できるのですが、実行ファイル(exe)というのができるときいていたのでできておらず、少し戸惑っています。 あと、Visual C++についているコマンドプロンプトを使ってできるのかな・・・とも思いましたが、使い方がよくわかりません。 私がCとC++をこんがらがって考えている(CとC++ってほとんどいっしょ?などと)せいなのかもしれませんが、教えていただけたら助かります。

  • プログラミング初心者ですが…

    変な質問ですみませんが…。 C言語の入門書でプログラミングをしていて、 <windows.h>というものが出てきました。 このwindowsというのはOSのWindowsとは関係ないんでしょうか? Linuxでも使えますか? sleep()関数とSleep()関数は違うのでしょうか? コンパイルするとエラーは出ませんでしたが、 sleep(1000)で実行すると、処理が途中で止まってしまいました。 Sleep(1000)とすると、動きました。 コンパイラはcygwinです。

  • 初心者です。C言語でクイズを作っています。

    下のようなプログラムを作ってみたのですが、 コンパイルエラーがでます。 どうか教えて頂けないでしょうか? これは、コンパイルエラーの文です。 $ gcc -o quiz2.exe quiz2.c quiz2.c: In function `main': quiz2.c:10: `y' undeclared (first use in this function) quiz2.c:10: (Each undeclared identifier is reported only once quiz2.c:10: for each function it appears in.) quiz2.c:29: parse error before `}' quiz2.c:39: parse error before `}' quiz2.c:46: parse error at end of input そして、このようなソースを作りました。 #include <stdio.h> main() { char ans, ans3; int ans2; printf("クイズを出題します。 y/n -->"); ans = getchar(); if(ans==y) { printf("目*花*歯があるのに口がないのなに?"); printf("1:包丁 2:植物 3:ロボット"); scanf("%d",&ans2); if(ans2==2) { printf("正解"); } if(ans2==1||ans2==3) { printf("ハズレ もう一度する? y/n"); ans3 = getchar(); if(ans3==y) { return(1) } else { printf("ゲームを終了"); } } else { printf("半角数字の1~3を入力して"); return(1) } } else { printf("またチャレンジしてね"); } } /*尚、環境はcygwinのgccを使っています。*/ 文字数が足りないので、printfの中などは少し省いてあります。

  • C言語でつるかめ算をするにはどうすればいいですか?

    C言語初心者の質問失礼します。 学校で、 「つると亀が合わせてn 匹います。足の数は合わせてm です。n とm を入力して、つると亀がそれぞれ何匹いるかを求めるプログラムを作りなさい。もし解がない場合は、その旨を出力するようにプログラムしなさい」 という課題が出たのですが、どうプログラムすればいいかわからずに困っています。 どのようにプログラムすればいいか、どうか一言でもかまいませんのでご意見ください!>< こんな質問してごめんなさい。もしよければプログラミングをわかりやすく学べるHPのURLも教えていただければ嬉しいです…。

  • C言語 2次方程式の解を求めるプログラム

    ポインタを使った2次方程式の解を求めるプログラムを作りたいのですが、どこが間違っているのか分かりません。 #include<stdio.h> #include<math.h> int quadEq(int a, int b, int c, double *px1, double *px2) int main() { int a,b,c,s; double x1,x2; printf("?"); scanf("%lf",&a); printf("?"); scanf("%lf",&b); printf("?"); scanf("%lf",&c); if((s=quedEq(a,b,c, &x1, &x2))==2){ printf("%f %f", x1,x2); // 解が二つ } else if(s==1){ printf("%f", x1);// 重解 } else { printf("No real solution");// 虚数解 } } int quadEq(int a, int b, int c, double *px1, double *px2) { int d = b*b-4*a*c; if(d>0){ *px1 = (-b+sqrt(d))/(2*a); *px2 = (-b-sqrt(d))/(2*a); return 2; } else if(d==0) { *px1=-b/2*a; *px2=-b/2*a; return 1; } else { return 0; } } エラーは mondai.c: 関数 ‘quadEq’ 内: mondai.c:5:1: エラー: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before {’ token { ^ mondai.c:26:1: エラー: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token { ^ mondai.c:39:1: エラー: expected ‘{’ at end of input } ^ となりました。括弧の位置の間違いや入れ忘れはないと思うのですが、何か根本的なミスがあるのでしょうか。添削お願いします。

  • C言語 プロトタイプ宣言

    分割コンパイルした場合のプロトタイプ宣言について質問です。 以下のプログラムをコンパイルすると警告がでます。 プロトタイプ宣言は関数を利用する側と定義側両方に必要と理解していたのですが・・・ どなたか教えていただけますでしょうか。 windows7 cygwin gccでコンパイル エラーメッセージ $ gcc -o testMain.exe testMain.c testKioku.c testKioku.c:9: 警告: conflicting types for 'func1' testKioku.c:3: 警告: previous declaration of 'func1' was here testKioku.c:17: 警告: conflicting types for 'func2' testKioku.c:4: 警告: previous declaration of 'func2' was here ソース testMain.c #include <stdio.h> void func1(void); void func2(void); int cnt=5; main(){ printf("main=%d\n",cnt); func1(); func2(); } testKioku.c #include <stdio.h> void func1(void); void func2(void); extern int cnt; func1() { cnt++; printf("func1 global cnt=%d\n",cnt); func2(); } func2() { printf("func2 global cnt=%d\n",cnt); }

専門家に質問してみよう