Eclipse C コンパイル、実行が解りません。

このQ&Aのポイント
  • Eclipse Cコンパイル、実行が不明なため、質問いたします。
  • 2つのプログラムを書いたが、エラーはないと思われる。
  • 実行構成の作成、管理、および実行方法がわからない。
回答を見る
  • ベストアンサー

Eclipse C コンパイル、実行が解りません。

いつも大変お世話になり誠にありがとうございます。 標記の件。 2つプログラムを書いたのですが、エラーはないと思います。 text5-1.c,text5-2.c text5-1.c /* * text5-1.c * * Created on: 2018/05/03 * Author: jump7 */ #include <stdio.h> int main(void) { int res; printf("\n"); scanf("%d", &res); switch(res){ case 1: printf("1が入力されました。\n"); break; case 2: printf("1が入力されました。\n"); break; default: printf("1か2を入力してください。\n"); break; } return 0; } text5-2.c /* * text5-2.c * * Created on: 2018/05/03 * Author: jump7 */ #include <stdio.h> int main(void) { char res; printf("?\n"); printf("YN\n"); res = getchar(); if (res == 'Y' || res =='y'){ printf("あなたは男性ですね。\n"); } else if(res =='N' || res == 'n'){ printf("YかNを入力してください。\n"); } return 0; } メニューの「実行」から「前回の起動を実行」 「前回の起動をデバック」「前回の起動をプロファイル」 3つやってみると、実行構成、構成の作成、管理、および実行 プログラムが指定されていません。と出ます。 どうやってプログラムを指定するのでしょうか? ご多忙のところ、恐れ入ります。 ご回答のほどよろしくお願いします。

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

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

>メニューの「実行」から「前回の起動を実行」 >「前回の起動をデバック」「前回の起動をプロファイル」 >3つやってみると、実行構成、構成の作成、管理、および実行 >プログラムが指定されていません。と出ます。 ソースを書いただけでは実行できません。 コンパイルして実行形式のファイルを生成しないといけません。 その作業をビルドと言います。 ビルドをする前に実行構成をすることも必要になるでしょう。 EclipseでC言語のプログラミングする方法の初歩的な説明をしているサイトを探して自習することをお薦めします。 自分で検索することに慣れないと何でも質問しなければ解決しません。 自習する習慣が付くとレベルアップに繋がります。

jump7799
質問者

お礼

それもそうですね。 検索でこの問題が解けると自信になりますからね。 ありがとうございました。

その他の回答 (8)

回答No.9

>今、迷っていたところです。 >やはり、Cを使いこなせるようになって >javaの勉強をします。 ハードルが低い方から勉強すると言う選択肢も考えて良いと思います(初心者に柔道とかで いきなり県大会に出場しろと言うのは、あまりにも初心者には酷だと思いますので)。 個人的には初心者に厳しいC言語より、javaから勉強した方が良いと思います。

jump7799
質問者

お礼

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

回答No.8

>C言語をある程度使いこなせるようになれば、たいていの言語にも応用ができるので初めに学んでおいて損はありません。 ↑これは嘘ではありませんが、ちょっと大げさな例えになるかもしれませんが、初心者に柔道とかで いきなり県大会に出場しろ見たいな話です。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 今、迷っていたところです。 やはり、Cを使いこなせるようになって javaの勉強をします。

回答No.7

一般的にC言語(C++も含む)のポインタは初心者が つまづきやすいと言われています。 あと、(昔に読んだ記事に)存在しない(または間違った)メモリー領域(以前は有ったけど、既に消えている場合なども含む)にポインタでアクセスするようなバグがCプログラマーでも割りとあるそうです。 C言語(C++も含む)を勉強したいのなら その辺の難関を乗り越える気概が必要かもしれません。 プロのエンジニア9人が徹底解説!おすすめのプログラミング言語9選 https://www.geekjob.jp/recommended-programming-language/ > 初心者が軽い気持ちでC言語を学び始めると痛い目にあいます。が、C言語をある程度使いこなせるようになれば、たいていの言語にも応用ができるので初めに学んでおいて損はありません。 > 多くのエンジニアがつまずいてきたポインタ管理などの理解が必要なため、使いこなせるようになるには時間が掛かります。 ↑これは「C++」にも言える事です。 【C言語入門】ポインタのわかりやすい使い方(配列、関数、構造体) https://www.sejuku.net/blog/25094

jump7799
質問者

お礼

ご回答誠にありがとうございます。 肝に銘じます。

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

>2つプログラムを書いたのですが、エラーはないと思います。 EclipseでのC言語は初めてですが検証してみました。 2つのソースでビルド時にエラーはありませんでした。 しかし、表現上に不適切な部分があります。 text5-1.cで「printf("?\n");」と「printf("YN\n");」はキー入力前に表示したいのでしょうが結果は異なります。 また、「case 2:」での処理が「case 1:」の処理と同じになっています。 text5-2.cでも「printf("?\n");」と「printf("YN\n");」が同様に思惑通りになりません。 また、「else if(res =='N' || res == 'n'){」と「printf("YかNを入力してください。\n");}」はNまたはnを入力したときに表示される文言には不適切でしょう。 >どうやってプログラムを指定するのでしょうか? ソースの編集が終ったら「ファイル」のプルダウンメニューから「すべてを保存」して、「実行」のプルダウンメニューから「実行構成」を設定し、実行形式のファイル名を指定します。 次に「プロジェクト」のプルダウンメニューから「すべてビルド」を実行します。その結果、プロジェクトエクスプローラーに「バイナリ」フォルダができて中に実行形式のファイル(ファイル名.exe)ができるはずです。 出来た実行形式ファイルを実行させれば良いでしょう。 私にできてあなたにできないのは言語の理解力と応用力が違うだけと思います。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 CもEclipseを使ってやってみます。 いつもありがとうございます。

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

>最終的にはJAVAの達人を目指しております。 >その予行練習としてEclipseを使っています。 本末転倒のようです。 EclipseはC言語よりJAVAの方が手軽に使えるプログラム開発環境です。 JAVAの場合はソースを書いて実行環境を設定すれば実行の指定でコンパイルをして実行ファイルまで作成してくれます。 C言語で慣れてからJAVAに切り替えるのは無駄と思います。 直接JAVAの学習をされた方がよろしいのではないでしょうか?

jump7799
質問者

お礼

判りました。 Cはエディターを使ってやります。

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.4

>最終的にはJAVAの達人を目指しております。 JavaかCを選ぶこと。 中途半端にやると文法がごちゃごちゃになります。 よく似ていますので頭の中が混乱します。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 取り敢えずCをがんばります。

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.2

Cを覚えたいんですよね。 Eclipseは関係ないでしょ。 あれもこれもやりだすと訳わからなくなりますよ。 それと、 >text5-2.c YかNを入れてYだったら”男性”、Nだったら”YかNを入力してください” プログラムがあっているかは使う人がやりたいように動くかどうかですので 判断できませんがロジック的にはおかしなことです。 ”YかNを入力してください”って言われてNを入力したら叱られるようなものは 認められません。

jump7799
質問者

お礼

最終的にはJAVAの達人を目指しております。 その予行練習としてEclipseを使っています。 ありがとうございます。

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.1

質問されていることの回答ではありませんがgetchar()の戻り値をchar型の変数で受けてはいけません。 >char res; ... >res = getchar();

jump7799
質問者

お礼

ご回答誠にありがとうございました。

関連するQ&A

  • C言語、成績は4194432?

    いつも大変お世話になり誠にありがとうございます。 標記の件。 おかしな実行結果になりました。 どうしてでしょうか? ご回答の程宜しくお願い申し上げます。       記 コード #include <stdio.h> int main(void) { int res; printf("成績を入力してください。\n"); scanf("%d", &res); printf("成績は%dです。\n", res); switch(res){ case 1: printf("もっとがんばりましょう。\n"); break; case 2: printf("もう少しがんばりましょう。\n"); break; case 3: printf("さらに上をめざしましょう。\n"); break; case 4: printf("たいへんよくできました。\n"); break; case 5: printf("たいへん優秀です。\n"); break; } return 0; } 実行結果 C:\MinGW>test20.exe 成績を入力してください。 A 成績は4194432です。 C:\MinGW>test20.exe 成績を入力してください。 b 成績は4194432です。 C:\MinGW>test20.exe 成績を入力してください。 v 成績は4194432です。 度々申し訳ございません。 ご回答の程宜しくお願い申し上げます。

  • コンパイルエラーについて

    関数 y=x と y=x*x/8 のグラフをテキストで描くプログラムなのですが、cygwinでコンパイルすると次のエラーが出ます。何を直せばいいのか教えてください。 /tmp/cceveo7s.o:week2.c:(.text+0x62): undefined reference to `_f' /tmp/cceveo7s.o:week2.c:(.text+0xb1): undefined reference to `_f' /tmp/cceveo7s.o:week2.c:(.text+0xbd): undefined reference to `_g' collect2: ld はステータス 1 で終了しました ソースプログラムはこちらです。 #include <stdio.h> #define XSIZE 20 #define YSIZE 20 char graph[XSIZE][YSIZE]; /* 座標(x, y)に文字cをプロットする */ void f(int x, int y, char c); /* 作成したグラフを表示する */ void g(void); int main(void){ int x, y; for (x=0;x<XSIZE;x++){ y = x; f(x, y, '+'); } for (x=0 ; x < XSIZE ; x++){ y=x*x/8 ; f(x, y, '*'); if(y>=YSIZE) break; g(); return 0; } void f(int x, int y, char c) { graph[x][y] = c; } void g(void) { int a, b; for (b=YSIZE ; b>0 ; b--){ for (a = 0 ; a < XSIZE ; a++){ if (graph[a][b]==0) printf(" "); else printf("%c ", graph[a][b]); } printf("\n"); } } return 0; }

  • C言語の課題で

    C言語の課題で 「成績集計プログラム 入力件数nをキーボードより入力し、n人分のテストデータを入力する。その際、合計点、最高点、最低点を求め、最後に平均点を計算しそれぞれを出力するプログラムを作成せよ。ただし、平均点は実数型とし小数点第2位まで出力する。平均点以外の変数は整数型とする。」というのが出ました。 #include <stdio.h> int main(void) { int n,a,b,c; int res,i; printf("入力件数を入力して下さい。\n"); scanf("%d",&n); for(i = 1; i <= n; i++) { printf("点数を入力して下さい。\n"); scanf("%d",&a); printf("%d人目=>%d\n",i,a); if(i == res) break; } return 0; } ここまでは、出来たのですが、後が分かりません。どなたか教えていただけませんか?お願いします。

  • C言語 どこがコンパイルエラーか解りません。

    いつも大変お世話になっております。 標記の件。 どこがエラーなのか解りません。 2時間くらい、にらめっこが続いています。 どこがエラーなのか教えて下さい。 ご回答のほどよろしくお願い申し上げます。 コード #include <stdio.h> int a = 0; void func(void) { int c = 2; printf("func関数では変数aとcが使えます。¥n”); printf("変数aの値は%dです。\n",a); /*printf("変数bの値は%dです。\n",b);*/ printf("変数cの値は%dです。\n",c); } int main(void) { int b = 1; printf("main関数では変数aとbが使えます。\n"); printf("変数aの値は%dです。\n", a); printf("変数bの値は%dです。\n", b); /*printf("変数cの値は%dです。\n", c); */ func(); return 0; } コンパイルエラー printf("func関数では変数aとcが使えます。¥n”); ^ text10.c:9:8: error: missing terminating " character printf("func関数では変数aとcが使えます。¥n”); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ text10.c:10:34: error: expected ')' before ';' token printf("変数aの値は%dです。\n",a); ^ text10.c:10:1: warning: passing argument 1 of 'printf' makes pointer from integer without a cast [-Wint-conversion] printf("変数aの値は%dです。\n",a); ^~~~~~ In file included from text10.c:1:0: c:\mingw\include\stdio.h:454:38: note: expected 'const char *' but argument is of type 'int' _CRTIMP __cdecl __MINGW_NOTHROW int printf (const char *, ...); ^~~~~~ text10.c:13:1: error: expected ';' before '}' token } どうかよろしくお願いいたします。

  • C言語 ツェラーの公式を使った曜日の計算

    ツェラーの公式を使い、年、月、日にちから曜日を表示するプログラムを作りました。 #include<stdio.h> main() { int y,m,d,x,z; printf("年、月、日にちの順に入力してください→"); scanf("%d%d%d",&y,&m,&d); if(m<2){ m=m+12; y=y-1; } x=y+y/4-y/100+y/400+(13*m+8)/5+d; z=x%7; switch(z){ case 0: printf("日曜日\n"); break; case 1: printf("月曜日\n"); break; case 2: printf("火曜日\n"); break; case 3: printf("水曜日\n"); break; case 4: printf("木曜日\n"); break; case 5: printf("金曜日\n"); break; case 6: printf("土曜日\n"); break; } } これを基本に、1582年10月5日以前の入力があったとき「エラー」と表示するにはどうすればいいですか? 解答お願いします。

  • C言語で電卓を作成する。

    C言語を用いて三項まで計算できる電卓を作りたいのですが、どうも上手くいきません。 四則演算(+、-、×、÷)の優先順位を用いたプログラミング方法が分かりません。 以下に自分で作成したソースを添付します。 このソースに修正や追加して3項までの四則演算できるプログラミングを教えていただけますか? 宜しくお願いします。 #include <stdio.h> int main(void) { int answer; /*答え*/ int x,y,z; /*x=第一項,y=第二項,第三項*/ char op1,op2; /*演算子1、演算子2*/ while(1){ printf("式を入力してください\n"); printf("式:"); scanf("%d %c %d %c %d" ,&x,&op1,&y,&op2,&z); if((op1=='+'|'-'|'*'|'/') && (op2=='+'|'-'|'*'|'/')){ switch(op2){ case '+': answer=y+z; break; case '-': answer=y-z; break; case '*': answer=y*z; break; case '/': if(z==0){ printf("ERROR\n"); return 0; } answer=y/z; break; default: printf("ERROR\n"); return 0; } switch(op1){ case '+': answer=x+answer; break; case '-': answer=x-answer; break; case '*': answer=x*answer; break; case '/': if(y==0){ printf("ERROR\n"); return 0; } answer=x/answer; break; default: printf("ERROR\n"); return 0; } printf("答え:%d\n",answer); } else { switch(op1){ case '+': answer=x+y; break; case '-': answer=x-y; break; case '*': answer=x*y; break; case '/': if(y==0){ printf("ERROR\n"); return 0; } answer=x/y; break; default: printf("ERROR\n"); return 0; } printf("答え:%d\n",answer); } } } 左辺に×、÷が来ても優先的に計算されません。

  • C言語でscanf()が先に実行されるのはなぜですか?

    C言語でscanf()が先に実行されるのはなぜですか? #include <stdio.h> int main(void){ int intNum; printf("整数を入力してください:\n"); scanf("%d", &intNum); printf("入力値は:%d\n",intNum); return(0); }

  • 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() { int a,b; char ch; printf("実行したい演算は\n"); printf("加算(A)、減算(S)、乗算(M)、除算(D)のどれですか\n"); do{ printf("アルファベットの1文字を入力してください:"); ch=getchar(); while(getchar()!='\n'); }while(ch!='A' && ch!='S' && ch!='M' && ch!='D'); printf("\n"); printf("最初の数字を入力してください:"); scanf("%d",&a); printf("二つめの数字を入力してください:"); scanf("%d",&b); switch(ch){ case 'A': printf("%d",a+b); break; case 'B': printf("%d",a-b); break; case 'C': printf("%d",a*b); break; case 'D': if(b!=0)printf("%d",a/b); } return 0; } このプログラムでの14行目の while(getchar()!='\n');の必要性がわかりません。 どなたか有識者の方の回答をお願いします。

  • C言語の課題が分からなくて困っています。

    http://www.picamatic.com/view/5868047_かかか/ URLの画像のような数当てゲームのプログラムを作成しているのですが、(1)~(5)の部分が分からなくて困っています。 面倒だとは思いますが、教えていただけないでしょうか。 #include<stdio.h> #include<stdlib.h> #include<time.h> int mani(void){ int i,x,y; srand((unsigned int)time(NULL)); (1) //1~1000の数をランダムに作成   y=0; //入力回数yを0にセットする for(;;){ //break文があるまで以下の処理を繰り返す printf("1以上1000以下の整数を入力してください。\n"); (2) //答えの入力 y=y+1; //入力回数yを1を増やす (3) //あたりの場合 printf("%d回目で当たりました。\n",y); (4) } else{ //外れの場合    (5) printf("違います。もっと大きな数です。\n"); else printf("違います。もっと小さな数です。\n"); } } return 0; }

専門家に質問してみよう