• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Eclipseだとエラーになります。)

Eclipseでのコード実行でエラーが発生する理由

このQ&Aのポイント
  • EclipseではTeraPadで成功したコードが実行できない問題が発生しています。
  • 対象のコードを実行する際にコンパイルエラーが発生しています。
  • コンパイルエラーの原因はmain関数の定義不足によるものです。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>Eclipseのコンソールには何も出ないのです。 Eclipseで何をしたときに何処に何も出ないのですか? 言葉のキャッチボールが出来ていませんのであなたがやっていることがこちらでは見えません。 >C言語はエディターでやります。 これも何のことか分かりません。 C言語のコードを書くのはエディターで出来ますがコンパイルやビルドはコンパイラーで実行しないと実行可能なバイナリファイルが生成できません。 TeraPadでC言語のソースファイルを編集して所定の位置へ保存し、MinGWのgccでコンパイルとビルドをしてWindows OSで実行可能なexeファイルを作らないとプログラムを作ったことになりません。 >NetBeansを教えてくれる人がいたら >NetBeansを使うかも知れません。 メモ帳とコマンドプロンプトでC言語の簡単なプログラムを作成できない人が種々のプログラム開発ツールを渡り歩いても身に付くはずがありません。 あなたはプログラム言語での実行ファイルを作る基本的な考え方を理解していないと思いますのでメモ帳とコマンドプロンプトでサンプルプログラムを多数実証してプログラム言語で記述されたコードと実行ファイルの動作の関連性を理解するまで繰り返すことをお薦めします。 私はあなたが提示したC言語のコードについてメモ帳とコマンドプロンプトでMinGWのgccでコンパイルする方法とEclipse内臓のエディターで編集し、Eclipseに組み込まれたMinGWでビルドし、Eclipseに内臓のコンソールで実行ファイルを起動した結果を比較できました。 その結果、Eclipseのコンソールではprintfでコンソールへ出力したデータが直ぐに出力されずscanfで入力された後のprintfと一緒にコンソールへ出力されるという現象に気付きました。 それを解決するには出力データを一時記憶するバッファー機能に貯められたデータを強制的に吐きさせるfflushを使う方法を見つけました。 このように情報収集と応用力を駆使してコードを作成しないと目的通りのプログラムができません。(回答No.2で簡単な説明をしました) >多分Eclipseでしょう。 プログラム開発の言語と開発環境の使い方は専門の教育機関で学習しないと習得できないかも知れません。(質問が断片的で然も回答を読みこなせていません)

jump7799
質問者

お礼

おっしゃる通り、子供が遊んでいるのとそう変わらず、 色々なエディターや統合開発環境に興味があるだけです。 あまり、勉強になっていません。 心を改めます。

その他の回答 (6)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.7

回答No.5の「Eclipseのコンソールには何も出ないのです。」に対する説明の補足です。 Eclipseのエディターでソースを書いてプロジェクトのビルドを実行したときにエラーはでないがバイナリのexeファイルを実行するとEclipseのコンソールに入力を促すメッセージがでないということでしたらprintfとscanfの間にfflush(0);と言う行を挿入してください。 尚、再ビルドの前には必ずファイルの保存を行ってください。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 マダ、そこまで至ってません。 ガンバります。

回答No.6

>>TeraPadでは成功したコードがEclipseでは通りません。 >>どうしてでしょうか? >ここでも認識自体が間違ってます。 自分のやってることを ある程度(100%とは言いません) 理解している必要があります。 回答者が言っていることを ある程度(100%とは言いません) 理解している必要があります。 そうでないとbunjiiさんの仰ってるとおり「言葉のキャッチボールが出来ていません」と言うことになります(それは意思疎通が困難と言うことです)。

jump7799
質問者

お礼

意思の疎通もガンバります。 ご回答誠にありがとうございます。

回答No.4

>TeraPadでは成功したコードがEclipseでは通りません。 >どうしてでしょうか? ここでも認識自体が間違ってます。 恐らくEclipseでソーソを入力したのでしょうか?、そのソースをMinGW(gcc)でコンパイルし、MinGW(gcc)でエラーが発生してます(Eclipseで通らないのではありません)。 Sample1.cは どのフォルダーに有りますか?、Sample1.cが有るフォルダーを確認してSample1.cをフルパスで指定して下さい。 wormholeさんの仰るとおり、コマンドプロンプトで 「type フルパス\Sample1.c」で表示させて確認してみて下さい。 そんなことしてるより、Eclipseでコンパイルした方が簡単です。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 もう色々なエディターや統合開発環境があるので、 頭がごジャごジャになりました。 1から出直します。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>TeraPadでは成功したコードがEclipseでは通りません。 >どうしてでしょうか? 私が毎度いっているように自分で何をやっているのかを全く理解していないからです。 eclipseで確かに質問に書かれているコードを書いてはいるのでしょうが コンパイルしようとしているSample1.cに、それが本当に書かれていますか? >C:\MinGW>gcc Sample1.c -o Sample1 を行う前に type Sample1.c で確認してください。 また以前「C:\MinGW>gcc Sample1.c -o Sample1」について説明して下さいといいましたが再度同じく説明してください。 「C:\MinGW>gcc Sample1.c -o Sample1を行いたかったんです」なんて答えを聞いてるんじゃないです。 それをやることで何がどうなるかを聞いてるんです。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>TeraPadでは成功したコードがEclipseでは通りません。 TeraPadはエディターですでよね? GCC(MinGW)との連携ツールがあるのですか?(私は使っていません) EclipseのバージョンはOxygen.3a Release (4.7.3a)でしょうか? 「Eclipseでは通りません」とはEclipseのコンソールでどのようなメッセージですか? >コンパイルエラー >  中略 >どうゆうことでしょうか? エラーメッセージはgccコマンドでコンパイルしたときのものですよね? Eclipseとは関係のないエラーのようです。 当方ではエラーになりませんがscanfの前にprintfで出力している文字列がバッファーに残りキー入力後にまとめて吐き出しています。 これはEclipseのコンソールの仕様であると思います。 fflush(0);をscanfの前に挿入することで吐き出してくれます。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 Eclipseのコンソールには何も出ないのです。 C言語はエディターでやります。 C言語をほぼ極めたら、JAVAをやります。 NetBeansを教えてくれる人がいたら NetBeansを使うかも知れません。 多分Eclipseでしょう。 今後とも宜しくお願い申し上げます。

回答No.1

>どうゆうことでしょうか? Eclipseでは int main (void) は許されません。 Eclipseでは int main(int ,char **) を定義しないとスタートアップルーチンからmainを呼び出せません。 int main (void) を int main (int argc,char **argv) に書き変えれば、コンパイルできます。

jump7799
質問者

お礼

貴重なご回答誠にありがとうございます。