老親介護に悩む30~60代の方へ
老親介護ねっと[老人ホーム編]
トップ 老人ホームの選び方 介護関連ニュース 新規オープンホーム情報 老人ホーム取材レポート お問い合わせ リンク集 Q&A

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

解決済みの質問

printf scanf が、反応しません。

#include <stdio.h>

/*構造体struct carの宣言*/
struct Car{
int num;
double 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;

}

C:\WORK>gcc test18.c

C:\WORK>gcc -o test18 test18.c

いつも教えて頂き、誠にありがとうございます。

上記の件。

println scanfが反応しません。

どうすればいいでしょうか?

ご回答のほど、宜しくお願い申し上げます。

投稿日時 - 2018-07-09 09:10:28

QNo.9516585

困ってます

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

回答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言語を並行して学習すると混乱が起こりますので何方か一方にすることをお薦めします。

投稿日時 - 2018-07-11 07:26:34

お礼

いつも教えてくださり、大変お世話になっております。

それにしても、よくご存じですね。

今後とも宜しくお願い致します。

投稿日時 - 2018-07-11 09:26:14

ANo.11

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

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

回答(11)

ANo.10

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

日本語
使用しているOSの基本的な操作方法や用語

投稿日時 - 2018-07-11 02:57:15

ANo.9

>申し訳ありませんが、
>Windows10でのコンパイル、実行を単純に
>アルファベットで書いてもらえませんか?

意図して書いてないのですから、ご自分でお考えください(そんな回答だと、それをタイプするだけで自分の頭では考えないでしょ)。
ヒントは出してますし。

投稿日時 - 2018-07-10 20:10:23

お礼

ボクはこれ(URL)を見て解らないということは、

何から勉強すればいいですか?

投稿日時 - 2018-07-10 23:31:06

ANo.8

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

投稿日時 - 2018-07-10 11:51:47

ANo.7

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

投稿日時 - 2018-07-10 09:00:24

ANo.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です。

投稿日時 - 2018-07-10 03:18:34

お礼

ご回答誠にありがとうございます。

a.exeだと、ファイル名を指定していません。

申し訳ありませんが、

Windows10でのコンパイル、実行を単純に

アルファベットで書いてもらえませんか?

お手数おかけします。

何卒、宜しくお願い申し上げます。

投稿日時 - 2018-07-10 07:35:49

ANo.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);に修正しました。

投稿日時 - 2018-07-09 23:43:39

お礼

ご回答誠にありがとうございます。

今は、文字化けしません。

今の質問は、scanf printlnが何故、反応しないかを

質問しています。

投稿日時 - 2018-07-10 00:08:33

ANo.4

>http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html
>を見てコンパイル、実行の仕方を参考にしました。

そのurlを参考にして、なぜ質問に書いてあるような手順になるんですか・・・
そこに書いてある文章ちゃんと読んでいますか?
とても読んでるようには思えないので、私が文章で説明しても無駄かと。

投稿日時 - 2018-07-09 23:13:18

お礼

ご回答誠にありがとうございます。

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
'.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

他にも検索して試してみましたが、上手く行きません。

教えてください。

宜しくお願い申し上げます。

投稿日時 - 2018-07-09 23:51:16

ANo.3

>C:\WORK>gcc test18.c
>C:\WORK>gcc -o test18 test18.c

質問に書かれた手順を見る限りコンパイルして実行ファイルを作っただけで、実行はされてませんけど?(実行していないんだからprintfやscanfが動作するわけない)
コンパイルを2度やっている意味も分かりませんし。
自分がやってることが何なのか理解していますか?(もういい加減いい飽きた)

また#1の方が書かれているようにソースコードにも間違いがあります。

投稿日時 - 2018-07-09 19:00:51

お礼

http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html

を見てコンパイル、実行の仕方を参考にしました。

どうすればいいのですか?

ご回答のほど宜しくお願い申し上げます。

投稿日時 - 2018-07-09 22:30:28

ANo.2

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

投稿日時 - 2018-07-09 14:15:44

お礼

いつも大変お世話になっております。

cc1.exe: error: failure to convert cp932 to UTF-8

と出ました。

どこが間違っているのでしょうか?

ご回答のほど宜しくお願い申し上げます。

投稿日時 - 2018-07-09 22:33:01

ANo.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;

}

投稿日時 - 2018-07-09 11:41:54

お礼

ご回答ありがとうございました。

おっしゃる通りに直しましたが

scanf printfが反応しません。

どこが間違っているのでしょうか?

度々すいません。

ご回答のほど宜しくお願い申し上げます。

投稿日時 - 2018-07-09 22:35:48