簡単な質問で恐縮ですが、現在WindowsでVC++2010Expressでコードを書いています。
そこで、以下の様な入力文字数を返すコードを書いているのですが、コマンドプロンプト上でCtrl+Z(Ctrl+Dも試した)を押してもストップしてくれません。(コマンドプロンプト上に「^Z(^D)」と表示されるだけです。
どなたか教えて頂けませんでしょうか?
#include <stdio.h>
int main()
{
int strText;
int counter=0;
while( (strText=getchar() ) != EOF){
++counter;
}
putchar(counter);
return 0;
}
No.4
- 回答日時:
>ところで、(仕様にもよるでしょうが)何も言われていない場合であれば通常キャラクタのカウントにはスペースやタブ、改行は含めるのでしょうか?
コード次第…でしょう。
なお、掲示されているコードは「入力した文字のカウント」ではなく「getchar()がEOF以外の値を返却した回数のカウント」となっているハズです。
# gets()やscanf()などとは違い、「BackSpace」や「Delete」も1文字としてカウントするでしょうし。
仕様と言っているのは「getchar()が戻ってくる際の仕様」かと。
たいていgetc(stdin)のマクロになっていると思われますので、そちらの仕様次第…と。
この回答への補足
>「BackSpace」や「Delete」も1文字としてカウントするでしょうし。
私もそれが気になって「BackSpace」や「Delete」も試してみましたが、カウントされずに表示通りの文字数が返って来ました。
この辺の動作が不明なのですが、「getchar()がEOF以外の値を返却した回数のカウントとなっているハズ」ではないのでしょうか?
No.3
- 回答日時:
>ところで、(仕様にもよるでしょうが)何も言われていない場合であれば通常キャラクタのカウントにはスペースやタブ、改行は含めるのでしょうか?
スペースとタブは数え、改行は数えませんね。
タブはデータ上は1文字ですが、見た目には4文字や8文字になるので
4や8とカウントすることもあります。
要は画面や印刷で数えたものと一致させることですね。
No.1
- 回答日時:
Windows+vc2013で動かしてみました。
Ctrl+Zをおすと^Zと表示されて、その後enterを押すと終了しました。
ちなみに
putchar(counter); ではなくて、
printf("%d\n",counter); にしましょう。
それに(仕様によりますが)enterも数えています。
この回答への補足
VS2013とVS2010でこの辺のことが違うということはないと思うのですが。
あれから、特に何もコードをいじること無しに動くようになりました。Linkが見つからないとエラーが出ていたので、そこのフォルダから一度開き直したからかもしれません。
printfは先にそれで試してならなかったのでputcharを書いておりました。正常にコンパイルされてからはputcharではエラーが出るので書き換えました。
ところで、(仕様にもよるでしょうが)何も言われていない場合であれば通常キャラクタのカウントにはスペースやタブ、改行は含めるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# char string[100]; int c, i=0; while( (c=getchar()) 2 2022/05/30 21:41
- C言語・C++・C# C pointer? or... 2 2022/03/29 00:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムの実行時に'<'でリダ...
-
正負を反転させて出力するプロ...
-
漢字のソートについて
-
*をユーザーが入力した数字の数...
-
C言語について
-
Userformの入力順序をタブオー...
-
コマンドプロンプトからのEOFの...
-
Yesならこっちへ、NOなら...
-
Excel VBAで、Application.Inpu...
-
プログラミング初心者です。 Py...
-
C言語(構造体)
-
cygwin上でのプログラミングに...
-
IF文で戻ることはできますか?...
-
getchar()について 教えてくだ...
-
4桁の数字以外を入力したらエラ...
-
C言語について質問です。 以下...
-
scanf()で、エラー対応
-
"scanf"でエンターで改行させな...
-
Javaの質問です
-
恥ずかしながらC言語解析中のプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
プログラミングの問題です 「金...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
小数か整数かを判定する方法
-
cout関数を使っているのですが...
-
double型が正常に認識されてい...
-
scanfが2回使えない・・・?;
-
C言語でgetchar();が上手く使え...
-
WindowsでEOF
おすすめ情報