プロが教えるわが家の防犯対策術!

パソコンの初心者です。プログラムを作った経験はあるのですが、Windowsでgccを使おうとして、思わぬところではまっています。http://www2.ktokai-u.ac.jp/~kfuji/cygwin/cygwin. … より、cygwin をゲットし、起動することに成功しました。プロンプト「$」が現れ、昔作ったCプログラムは無事コンパイルされました。ところが、プログラム中にprintf("Hello \n"); 等のprintf文を書いてコンパイルし、$./a.exe を実行しても、標準出力にHello の文字が出力されないのです。おそらく簡単なところでつまづいているのだと思います。何を誤っているのでしょうか?助けてください。よろしくお願いします。

A 回答 (7件)

>$ us


>bash: us: command not found
cygwinではなくて純粋なコマンドプロンプトから実行する。
cygwinではなくてMinGWの方のgccは試した?

この回答への補足

MinGW をインストールしてみました。しかし、コンパイル時に
#include<stdio.h> 
が怒られて error が山のように現れる状態です。

補足日時:2007/10/17 11:08
    • good
    • 0

直接関係があるかわかりませんが


gccにこだわっている状態だとそのソースUNIX系(風)OS環境下で
元々作ったファイルがEUCコード
(改行コードが\n。Windowsの改行コードは\r\n。ただしCなどでプログラミングするときには\nでOK)
だったって事は無いですよね?

バックスラシュ・バックスラシュと騒いでいる人がいますが
\とバックスラシュは同じ文字コードなだけで同じです。
Windows日本語環境下での「\」になるだけです。
だからコマンドプロンプトを開いてusと打ち込んでusモードにして
\にあたるキーをタイプしてみてください。
バックスラシュになりますから
で\を別のところで打ち込んでusモードにしたコマンドプロンプトにコピペ
してみてください。
\ではなくてバックスラシュになっていますから
だから\だろうがバックスラシュだろうが関係無いです。

この回答への補足

貴重なコメントどうもありがとうございます。usモードというのは初めて知りました。検索してusモードというのを知りました。ただしかし、残念なことにプログラムがEUCモードになっていたという訳ではないようです。ちなみに、cygwin の画面上ではusと打ち込んでも、
$ us
bash: us: command not found
とエラーメッセージが出るだけで、画面は切り替わらないようです。
あと・・・今、実行しようとしているCプログラムは、旧機Windows98で作った数百行のプログラムです。新機でもコンパイルは成功するのですが、実行がうまくいかないのです。
かつてのgccは確かにコマンドプロンプト上からコンパイルしておりました。
その古いgccは現用のXPにおいてもコマンドプロンプト上から問題なく動作しております。ほんとに困ったものです。皆様には大変申し訳ない。

補足日時:2007/10/16 20:26
    • good
    • 0

No.2、No.3です。

gccを諦めるのは早いと思います。やはりバックスラッシュが問題かと思います。cygwinはサイトにあるようにインストールしたのでしょうか。サイトの説明では、gccだけをインストールしているようです。フルにインストールしてみたらいかがでしょうか。Webで探せばその方法の説明があると思います。

また、自己責任ですが、HDDを交換してLinuxをOSに使ってみたらいかがでしょうか。大抵のディストリビューションには、デポジトリがあり、そこからgccをダウンロードできます。

この回答への補足

ダウンロードするサイトを決めた後、「select packages」というのが出てくるのですが、「Devel」の下位にあるC言語だけではなく、「Devel」全てを「Default」から「install」にして、ダウンロードしてみました(Devel は debelopmentの略でしょうか)。しかしながら、結果は全く同じでした。やはり駄目です。諦めざるを得ません。

Linux を使うというのは一つの有力な手だと思っています。どうもありがとうございます。

補足日時:2007/10/16 12:09
    • good
    • 0

No.2です。

小生が、gvimで作成したプログラムは、以下のとおりです。

#include<stdio.h>

int main(void){

  printf("Hello World! (バックスラシュ)n");

  return(0);
}

バックスラシュが使えないため、変な表現になっています。

この回答への補足

お付き合いくださりどうもありがとうございます。結論から言いますと、貴殿のプログラムをコピーしてコンパイルしてみましたが、駄目でした。標準出力に「Hello World」は現れませんでした。(バックスラッシュ)のところはバックスラッシュを打ち込んでも、表示は「¥」で、コンパイルしてもerrorも warning も現れませんでしたが、実行しても結果は同じでした。gccを他のサイトから再インストールを2度ほど行ってみましたが、同じく駄目でした。
gccは諦めるよりしかたがなさそうです。本当にどうもありがとうございました。

補足日時:2007/10/16 08:31
    • good
    • 0

No.2です。

lsコマンドでa.exeファイルが作成されているのを確認されているのであれば、printf文がおかしいのではないかと思います。\nをバックスラシュnに変更してみたらいかがでしょうか。

また、gvimは、X windowで使いますので、"startxwin.sh"と入力して、X Windowを立ち上げてから、"gvim"と入力すれば、使えると思います。
    • good
    • 0

紹介されたサイトのようにメモ帳を使ってプログラムを書いたのでしょうか。

それをどこに保存しましたでしょうか。C\cygwin\home\useradminに保存しましたでしょうか。ちゃんとa.exeファイルが作成されているのを確認しましたでしょうか。cygwinを立ち上げてlsコマンドを打てば、そこの場所に作成されたファイルの一覧が表示されます。cygwinを立ち上げた場所にa.exeファイルが作成されていればOKです。

cygwinでプログラムを書く場合、cygwinに同梱されているエディタを使ったほうがいいのではないでしょうか。そうすれば自動的にtxtという拡張子がつくという問題もありません。gvimというエディタがありますので試してみて下さい。また、サイトのコンパイルの方法では、すべてのファイルがa.exeとなってしまいます。
 gcc -o test test.c
とコンパイルすれば、test.exeが作成されるはずです。cygwinでは、Cプログラムのほかに、Java、Ruby、Pythonも使えますので、トライしてみて下さい。

この回答への補足

エディタにはCプログラムを作るのに便利な、xyzzy(Emaxもどき)を使いました。ちゃんとtest.c に保存しました。拡張子を間違えているということはありません。more も less も ls も使えます。
 $gcc -o test test.c
で、test.exe が作成されることも確認しました。でも、
 $./test.exe
としても、何も表示されません。数百行のプログラムのコンパイルもerrorがなければできるので、コンパイル自体は問題なさそうなのです。ところが実行してもprintfしようとしているものが表示されないのです。

ただひとつ、貴殿のおっしゃるディレクトリは「C:\cygwin\home\useradmin」となっていますが、私の使っているディレクトリは
「C:\cygwin\home\Owner」となっています。これは問題でしょうか?

gvim も「cannot open」でした。これも問題でしょうか?

java は機会があればトライしてみるつもりです。

補足日時:2007/10/15 15:09
    • good
    • 0

1. ソースを補足に書く


2. コンパイルした方法を補足に書く

この回答への補足

ソースファイルは、test.cに保存されており、内容は以下です。

#include<stdio.h>
main()
{
printf("hello \n");
}

コンパイルの方法は

$gcc test.c

です。error も warning も出ません。$ はプロンプトです。

$./a.exe

を行っても標準出力には何も表示されません。

cygwin を疑い、別のサイトからcygwinをダウンロードしてみたのですが、状況は同じでした。よろしくお願いします。

補足日時:2007/10/03 13:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!