- ベストアンサー
printf scanfが反応しない問題
- printf scanfが反応しない問題についての質問です。
- 質問者はC言語でプログラムを作成していますが、printf文とscanf文が正常に動作しない状況です。
- 質問者はプログラムをコンパイルして実行したが、printf文での出力がされず、scanf文でも入力ができないという問題が発生しています。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
回答No.4のお礼に次の記述があることについて解説します。 ----------ここから---------- C:\WORK>gcc test18.c C:\WORK>./test18 '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ----------ここまで---------- gccコマンドでオプションの-oを指定しないときはa.exeと言うファイル名で実行形式のファイルが生成されます。(Windows OSの実行形式ファイルの拡張子は.exeです) あなたはtest18.exeが生成されると勘違いしているようです。 また、コマンドプロンプトで実行形式のファイルを実行するときカレントディレクトリに存在すればファイルが所在するディレクトリを指定しなくても実行できます。 敢て、カレントディレクトリを明示するときは.\を付けてください。 "."はカレントディレクトリを意味し、"\"はディレクトリの階層を区切る記号であり、あなたが記載している"./test18"はディレクトリの階層区切りがありません。 UNIX系のOSでは階層区切りに"/"が使われていますので"./test18"で良いでしょう。 また、コンパイル時に生成するファイル名を指定していませんのでtest18.exeがありません。 ----------ここから---------- C:\WORK>gcc test18.c C:\WORK>gcc -o test18 test18.c C:\WORK>./test18 '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ----------ここまで---------- こちらの手順ではコンパイルを2回実行していてa.exeとtest18.exeが生成されていますが前述の"/"が邪魔をして実行形式のファイルを見つけられまかったことが原因です。 質問の表題で「printf scanfが、反応しません。」と言っていますが「実行形式のファイルが起動できません。」のように表示しないと原因究明が遠回りになります。 今回の質問ではコンパイル時のエラーの原因もありますので状況説明が極度に不足していました。 また、C言語とJava言語を並行して学習すると混乱が起こりますので何方か一方にすることをお薦めします。
その他の回答 (10)
- wormhole
- ベストアンサー率28% (1626/5665)
>ボクはこれ(URL)を見て解らないということは、 >何から勉強すればいいですか? 日本語 使用しているOSの基本的な操作方法や用語
- wormhole
- ベストアンサー率28% (1626/5665)
>申し訳ありませんが、 >Windows10でのコンパイル、実行を単純に >アルファベットで書いてもらえませんか? 意図して書いてないのですから、ご自分でお考えください(そんな回答だと、それをタイプするだけで自分の頭では考えないでしょ)。 ヒントは出してますし。
お礼
ボクはこれ(URL)を見て解らないということは、 何から勉強すればいいですか?
- bunjii
- ベストアンサー率43% (3589/8249)
- bunjii
- ベストアンサー率43% (3589/8249)
>今の質問は、scanf printlnが何故、反応しないかを質問しています。 分かってますよ。 コンパイルが正しくできていなければ正常に動作しませんので先ずはコンパイルでエラーが起こっていない状態にする必要があります。 あなたが質問で提示したソースを1行だけ修正して検証したとき当方では正常にprintlnやscanfが動作しました。 但し、当方ではテキストエディターをメモ帳とし、保存時に文字コードをANSIに変更しています。その後、コマンドプロンプトでオプション付きのgccコマンドでエラー無くコンパイルできて、生成されたtest18.exeをコマンドプロンプトで実行すると正常に車番とガソリンの量を入力出来て結果も正しく表示されています。 あなたのPCを私が操作できないので何処に誤りがあるかを点検できません。 回答内容を理解できないことが原因かも知れません。
- wormhole
- ベストアンサー率28% (1626/5665)
>他にも検索して試してみましたが、上手く行きません。 そりゃでたらめに色々試してみたところで、そうそう上手くいくわけがありません。 http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html のurlに書かれているのはOSがunix系やLinuxでの話です。 Windows系で参考にするにはいくつか読み替える必要がある所があります。 ・unix系OSやLinuxではパスの区切り文字は / 、Windows系は \ ・gcc等のCコンパイラは-oオプションにより作成するファイル名を指定できます。-oオプションを指定せずにコンパイルして実行ファイルを作るときにはunix系OSやLinuxは、a.outが実行ファイル名になりますがWindowsの場合にはa.exeです。
お礼
ご回答誠にありがとうございます。 a.exeだと、ファイル名を指定していません。 申し訳ありませんが、 Windows10でのコンパイル、実行を単純に アルファベットで書いてもらえませんか? お手数おかけします。 何卒、宜しくお願い申し上げます。
- bunjii
- ベストアンサー率43% (3589/8249)
>どこが間違っているのでしょうか? 何時ものことですがあなたの質問や補足/お礼のコメントには状況説明が不足していて何処に不備が有るか分かりません。 「cc1.exe: error: failure to convert cp932 to UTF-8」からの推測ですがテキストエディターでソースを編集して保存するときに文字コードをUTF-8にしているように思われます。 Windows OSのコンソール(コマンドプロンプトまたはPower Shell)はUTF-8に対応していませんのでANSIで保存しないと文字化けするはずです。 当方で提示のコンパイルオプションをつけて検証すると正常にコンパイルされ実行結果も正常です。但し、テキストエディターはメモ帳で保存時に文字コードをANSIに変更しています。 追伸、scanf("%lf, &car1.gas");はscanf("%lf", &car1.gas);に修正しました。
お礼
ご回答誠にありがとうございます。 今は、文字化けしません。 今の質問は、scanf printlnが何故、反応しないかを 質問しています。
- wormhole
- ベストアンサー率28% (1626/5665)
>http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html >を見てコンパイル、実行の仕方を参考にしました。 そのurlを参考にして、なぜ質問に書いてあるような手順になるんですか・・・ そこに書いてある文章ちゃんと読んでいますか? とても読んでるようには思えないので、私が文章で説明しても無駄かと。
お礼
ご回答誠にありがとうございます。 C:\WORK>gcc test18.c C:\WORK>./test18 '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\WORK>gcc -o test18 test18.c C:\WORK>./test18 '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\WORK>gcc test18.c C:\WORK>gcc -o test18 test18.c C:\WORK>./test18 '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 他にも検索して試してみましたが、上手く行きません。 教えてください。 宜しくお願い申し上げます。
- wormhole
- ベストアンサー率28% (1626/5665)
>C:\WORK>gcc test18.c >C:\WORK>gcc -o test18 test18.c 質問に書かれた手順を見る限りコンパイルして実行ファイルを作っただけで、実行はされてませんけど?(実行していないんだからprintfやscanfが動作するわけない) コンパイルを2度やっている意味も分かりませんし。 自分がやってることが何なのか理解していますか?(もういい加減いい飽きた) また#1の方が書かれているようにソースコードにも間違いがあります。
お礼
http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html を見てコンパイル、実行の仕方を参考にしました。 どうすればいいのですか? ご回答のほど宜しくお願い申し上げます。
- bunjii
- ベストアンサー率43% (3589/8249)
MinGWでコンパイルするとエスケープシーケンスを含む文字列のためエラーが出ます。 コンパイルコマンドのオプションスイッチで対応してください。 gcc test18.c -finput-charset=cp932 -fexec-charset=cp932 -o test18
お礼
いつも大変お世話になっております。 cc1.exe: error: failure to convert cp932 to UTF-8 と出ました。 どこが間違っているのでしょうか? ご回答のほど宜しくお願い申し上げます。
- koujikuu
- ベストアンサー率43% (429/993)
scanf パラメータが違います scanf("%lf, &car1.gas"); ↓ scanf("%lf", &car1.gas ); int main(void) { struct Car car1; printf("ナンバーを入力してください。\n"); scanf("%d", &car1.num ); printf("ガソリン量を入力してください。\n" ); scanf("%lf", &car1.gas ); printf("車のナンバーは%d:ガソリン量は%fです。\n", car1.num ,car1.gas ); return 0; }
お礼
ご回答ありがとうございました。 おっしゃる通りに直しましたが scanf printfが反応しません。 どこが間違っているのでしょうか? 度々すいません。 ご回答のほど宜しくお願い申し上げます。
お礼
いつも教えてくださり、大変お世話になっております。 それにしても、よくご存じですね。 今後とも宜しくお願い致します。