• ベストアンサー

プログラムが始まりません

以下のプログラムを書いたところ、コンパイルは出来たのですが 正しく動作するか動かしたところ、7行目のprintfも実行されませんでした。それより上の部分に不備があるのでしょうか。 何か基本的なことをなにか基本的なことを理解できてないのかもしれませんが、教えていただけませんでしょうか #include<stdio.h> int main(void) { FILE *fi; char fname[100], ss[255], *a, t, ch; int count, b, n, err, c[1000]; printf("file name?"); gets(fname); fi = fopen(fname,"r"); fgets(ss,255,fi); if(ss[0]!='P') err = 1; if(ss[1]!='3') err = 1; if(err ==1){ printf("file type is wrong\n"); exit(1); } while(count < 3){ *a = fgetc(fi); if(*a == 20){ count++; } } while(1){ *a = fgetc(fi); if(*a == EOF){ break; } if(*a == 20){ b++; } if(b == 3){ b = 0; t = *(a-1); if(t == '1'|| t == '3' ||t == '5' || t == '7'|| t == '9'){ c[n] = 1; } else{ c[n] = 2; } n++; } ++a; } n == 0; while(c[n] !=0){ count == 0; while(count < 8){ if(c[n] == 1){ ch++; } ch == ch + ch; count++; } printf("%c",ch); } fclose(fi); }

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.5

>msysを使っていたのがダメだったのでしょうか。 >msysでも、簡単な(hello wordと表示するだけのような)プログラムな>ら正常に動いたのですが・・・ たしかに、hello wordだけなら、動作しますね。 printf("file name?");の 次の行に、return 0; をいれると、msysでも、file name?が表示されるので、 gets(fname);が問題を起こしていると思われます。 msysとgetsの関係がわからないので、ここは、 緊急避難的に、ファイル名を、起動パラメータで与えてはどうでしょうか?(又は、コマンドプロンプトで実行するかです) この方法が、不明な場合は、再度補足して下さい。

pwpr
質問者

お礼

とりあえずコマンドプロンプトから実行する方向でやろうと思います。 ありがとうございました。

その他の回答 (4)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

プログラムが動作しないのとは関係ないと思いますが 代入と思われる部分が比較になっている箇所が3箇所あります n = = 0; count = = 0; ch = = ch + ch;

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

MINGWでこのソースをコンパイルしました。 正しく、動作しています。 a.exeのあるディレクトリで、(コマンドプロンプトで) a.exe 又は .\a.exe と打ってみて下さい。 file name? が表示されます。(こちらでは確認済みです)

pwpr
質問者

お礼

コマンドプロンプトで実行すれば表示されました。 ありがとうございました。 msysを使っていたのがダメだったのでしょうか。 msysでも、簡単な(hello wordと表示するだけのような)プログラムなら正常に動いたのですが・・・

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

もしかしたら、非常に基本的なところで、間違っているのかもしれません。(プログラムを動作させるためには、実行形式のプログラムを起動する必要があります。これが、行われていないような気がします) まず、以下の点について、補足して下さい。 1.開発環境(OSの名称、コンパイラの名称) 2.どのようにして実行したのか? 例えば、このプログラムのソースファイルをsample.cとすると、 「sample.c自体をダブルクリックしたけれども、動作しなかった」 というような質問者も、過去におりました。 このようなことはないと思いますが、具体的にどのようにして実行したのかを、補足して下さい。

pwpr
質問者

補足

OSはWindowsXP,コンパイラはMINGWで $ gcc decode.c(このファイル名) $ ./a.exe として実行しましたが、画面には何も出力されず、入力を促すようなカーソルが出ましたが何を入力しても反応しませんでした。

  • shred
  • ベストアンサー率35% (25/70)
回答No.1

printf("file name?\n"); このように改行を入れましょう。 理由は自分で調べましょう。

pwpr
質問者

お礼

書き直してみましたが、解決しません。 他に問題となる箇所はないでしょうか。

関連するQ&A