• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:printf scanf が、反応しません。)

printf scanfが反応しない問題

このQ&Aのポイント
  • printf scanfが反応しない問題についての質問です。
  • 質問者はC言語でプログラムを作成していますが、printf文とscanf文が正常に動作しない状況です。
  • 質問者はプログラムをコンパイルして実行したが、printf文での出力がされず、scanf文でも入力ができないという問題が発生しています。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.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言語を並行して学習すると混乱が起こりますので何方か一方にすることをお薦めします。

jump7799
質問者

お礼

いつも教えてくださり、大変お世話になっております。 それにしても、よくご存じですね。 今後とも宜しくお願い致します。

その他の回答 (10)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.10

>ボクはこれ(URL)を見て解らないということは、 >何から勉強すればいいですか? 日本語 使用しているOSの基本的な操作方法や用語

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.9

>申し訳ありませんが、 >Windows10でのコンパイル、実行を単純に >アルファベットで書いてもらえませんか? 意図して書いてないのですから、ご自分でお考えください(そんな回答だと、それをタイプするだけで自分の頭では考えないでしょ)。 ヒントは出してますし。

jump7799
質問者

お礼

ボクはこれ(URL)を見て解らないということは、 何から勉強すればいいですか?

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

回答No.7の追加です。 当方で検証した画像を貼付します。 あなたの実行結果と何処が違っているかを確認してください。

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

>今の質問は、scanf printlnが何故、反応しないかを質問しています。 分かってますよ。 コンパイルが正しくできていなければ正常に動作しませんので先ずはコンパイルでエラーが起こっていない状態にする必要があります。 あなたが質問で提示したソースを1行だけ修正して検証したとき当方では正常にprintlnやscanfが動作しました。 但し、当方ではテキストエディターをメモ帳とし、保存時に文字コードをANSIに変更しています。その後、コマンドプロンプトでオプション付きのgccコマンドでエラー無くコンパイルできて、生成されたtest18.exeをコマンドプロンプトで実行すると正常に車番とガソリンの量を入力出来て結果も正しく表示されています。 あなたのPCを私が操作できないので何処に誤りがあるかを点検できません。 回答内容を理解できないことが原因かも知れません。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.6

>他にも検索して試してみましたが、上手く行きません。 そりゃでたらめに色々試してみたところで、そうそう上手くいくわけがありません。 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です。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 a.exeだと、ファイル名を指定していません。 申し訳ありませんが、 Windows10でのコンパイル、実行を単純に アルファベットで書いてもらえませんか? お手数おかけします。 何卒、宜しくお願い申し上げます。

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

>どこが間違っているのでしょうか? 何時ものことですがあなたの質問や補足/お礼のコメントには状況説明が不足していて何処に不備が有るか分かりません。 「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);に修正しました。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 今は、文字化けしません。 今の質問は、scanf printlnが何故、反応しないかを 質問しています。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html >を見てコンパイル、実行の仕方を参考にしました。 そのurlを参考にして、なぜ質問に書いてあるような手順になるんですか・・・ そこに書いてある文章ちゃんと読んでいますか? とても読んでるようには思えないので、私が文章で説明しても無駄かと。

jump7799
質問者

お礼

ご回答誠にありがとうございます。 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)
回答No.3

>C:\WORK>gcc test18.c >C:\WORK>gcc -o test18 test18.c 質問に書かれた手順を見る限りコンパイルして実行ファイルを作っただけで、実行はされてませんけど?(実行していないんだからprintfやscanfが動作するわけない) コンパイルを2度やっている意味も分かりませんし。 自分がやってることが何なのか理解していますか?(もういい加減いい飽きた) また#1の方が書かれているようにソースコードにも間違いがあります。

jump7799
質問者

お礼

http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html を見てコンパイル、実行の仕方を参考にしました。 どうすればいいのですか? ご回答のほど宜しくお願い申し上げます。

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

MinGWでコンパイルするとエスケープシーケンスを含む文字列のためエラーが出ます。 コンパイルコマンドのオプションスイッチで対応してください。 gcc test18.c -finput-charset=cp932 -fexec-charset=cp932 -o test18

jump7799
質問者

お礼

いつも大変お世話になっております。 cc1.exe: error: failure to convert cp932 to UTF-8 と出ました。 どこが間違っているのでしょうか? ご回答のほど宜しくお願い申し上げます。

  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1

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; }

jump7799
質問者

お礼

ご回答ありがとうございました。 おっしゃる通りに直しましたが scanf printfが反応しません。 どこが間違っているのでしょうか? 度々すいません。 ご回答のほど宜しくお願い申し上げます。