みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

コンパイラソフトがmsysなので判りません!?

以下プログラムですが!?
int judge;
int strike = 0;
int ball = 0;

while( strike < 3 && ball < 4 ){
printf( "ストライク=1 or ボール=2 ?" );
scanf( "%d", &judge );

if( judge == 1 )
strike++;
else if( judge == 2 )
ball++;
}
printf( "%dストライク,%dボール", strike, ball );

 以上ですが、あるサイトにあるプログラムです。以上のプログラムだけでは私が持っているコンパイルソフトのmsys は、エラーがでて動きません!?それ用のアレンジが分からないので現在は理論だけの勉強をしています。
以上プログラムで、ストライクを1回、ボール1回入力した場合、出力画面にどん画面が出てくるのでしょうか?以下余談ですが、msys 用にアレンジした場合どんプログラムになるのですか?
よろしくお願いします。

投稿日時 - 2011-06-02 06:05:17

QNo.6780472

困ってます

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

main()を書いたり、printf(), scanf()使っているのでそれらを宣言するかstdio.hをincludeするかするなどすれば動かせるかと思いますよ。


#include <stdio.h>

int main( void )
{
int judge;
int strike = 0;
int ball = 0;

while( strike < 3 && ball < 4 ){
printf( "ストライク=1 or ボール=2 ?" );
scanf( "%d", &judge );

if( judge == 1 )
strike++;
else if( judge == 2 )
ball++;
printf( "%dストライク,%dボール\n\n", strike, ball );
}
if( 3 == strike )
printf( "3振\n" );
if( 4 == ball )
printf( "4球\n" );
return 0;
}

投稿日時 - 2011-06-03 10:14:16

補足

ご回答ありがとうございました。
MSYSを使ってMinGWでコンパイルしましたが以下のエラーが出ました。

$ gcc a.c -o a.exe
c:\MinGw\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot open output file a.exe: Permission denied
collect2: ld returned 1 exit status

以上よろしくお願いいたします。

投稿日時 - 2011-06-03 20:55:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

> cannot open output file a.exe: Permission denied

権限不足でa.exeというファイルを書き出せないというエラーメッセージですね。
a.cを書き込み・編集できているはずなのにa.exeは書き込めないのは難解です。
そのディレクトリで ls -la を実行したらどうなりますか?

既にa.exeというファイルがそこに存在している場合は一度それを消してからやり直してみてください。
a.exeが存在していない場合は、書き込みができる他のディレクトリにa.cをコピーして、そこへcdで移動してからもう一度試してください。

投稿日時 - 2011-06-04 09:24:12

ANo.2

質問者は初歩の初歩、Hello Worldのプログラムを書いたり実行したりしたことはないのでしょうか?
もしあれば、質問文に書かれているのは完全なプログラムではなくその断片だということが分かると思います。ゆえに、msysだろうが他のCコンパイラだろうが、質問文に書かれている内容だけではコンパイル・実行できず、「msys用のアレンジ」というものは存在しません。
ついでに書くなら、私の知っているmsysならばそれは「コンパイラソフト」ではありません。

> 以上プログラムで、ストライクを1回、ボール1回入力した場合、出力画面にどん画面が出てくるのでしょうか?

ストライク=1 or ボール=2 ?1
ストライク=1 or ボール=2 ?2
ストライク=1 or ボール=2 ?
と出るでしょう。

投稿日時 - 2011-06-02 21:41:55

補足

ありがとうございます。
自分なりに理解を深めています。 
お待ちください^^

投稿日時 - 2011-06-03 05:37:54

ANo.1

これがプログラムの一部だとすると、この程度の内容なら、大抵のCコンパイラなら、変更の必要なくコンパイルできます。msysで使うgccでも、Visual C++でも、Borland Cでも、です。

まさかと思いますが、ここに書いたので全部、ということは無いですか?
ちゃんと、main関数として定義してありますか?

> エラーがでて動きません

具体的にどんなエラーなのでしょうか?
エラーメッセージを読んで、原因を考えて、修正して、次回からは同じエラーを出さない、出てもすぐ直せるようにする、というのが、プログラミング上達のコツの一つです。

投稿日時 - 2011-06-02 07:28:54

あなたにオススメの質問