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

C++実行結果に改行数のみ表示、文字数がでません

leaz024の回答

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

過去にも同様の症状での質問がありました。(下記URL) 入力の終了には Ctrl+Z を使いますよね。 どうもこれが悪さをして、次の1行が表示されなくなる(消される?)ようです。 恐らくMS-DOSのコンソール入出力制御が、そういう仕様なのでしょう。 これはあくまでコンソール上での話なので、出力をファイルへリダイレクトすれば正しく結果が書き込まれますし、入力をファイルからリダイレクトさせれば正しい結果が表示されます。 DOS窓内のみで作業が必要なら、文字数を出力する前に、改行を1つ出力すればOKです。 # リダイレクトというのは、出力先を画面からファイルに変えたり、入力元をキーボードからファイルに変えたりする方法です。 # hoge.exe > out.txt  とすれば、結果がファイルに書き込まれ、 # hoge.exe < in.txt  とすれば、ファイルの内容が入力に使われます。 # もちろん、in.txt には、予め入力したい内容を書き込んでおく必要があります。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=161528
yosiyosi
質問者

補足

>DOS窓内のみで作業が必要なら、文字数を出力する前に、改行を1つ出力すればOKです。 これは解りました。 > hoge.exe > out.txt  とすれば、結果がファイルに書き込まれ、 これは、このままDOSに打ち込むのでしょうか? 解らなかったので以下を実行しました。 実行ファイルの名前 < 入力ファイル名 > 出力ファイル名 でやって見のですが、プログラム全体の文字数、改行数が表示されて、実行結果の文字数、改行数が表示されません。 つまり、何文字、何行打ち込もうとも、 文字数=293 改行数=18となります。 例えば、 aaa aaa    の場合、 文字数=8 改行数=2 という具合に、出力ファイルに出ないのでしょうか? よろしくお願いします。

関連するQ&A

  • 改行文字について

    #include<iostream> using namespace std; int main(void) { char c; while (cin.get(c)) if (c == '\n') cout << "[RET]\n"; else cout << c; return(0); } これのif (c == '\n')の改行文字と等しいとは何のことを指すのでしょうか? よろしくお願いします。

  • 入力に出現する数字文字をカウントするプログラム

    こんにちは、毎度お世話になります。 #include<iostream> using namespace std; int main(void){ char c; int cnt[10] = {0}; while(cin.get(c)){ if(c >= '0' && c <= '9') cnt[c - '0']++; } for (int = 0; i < 10; i++) cout << i << "の出現回数:" << cnt[i] << '\n'; return(0); } [/code] ここで質問なんですが、このプログラムの中で数字文字をカウントしているのはどこでしょうか? そして while(cin.get(c)){ if(c >= '0' && c <= '9') cnt[c - '0']++; } ここの部分が何を表しているのか解りません。 よろしくお願いします。

  • cout関数を使っているのですが,画面に出力されません。

    いつもお世話になっております。今回はC++言語について質問があります。 次のプログラムは画面から入力された文字の数とリターンの数を数えるプ ログラムです。 /* 入力の文字数を数えるプログラム */ #include <iostream.h> int main(int argc, char **argv){ char c; int RETcount = 0; //改行数 int CHARcount = 0; //文字数 while(cin.get(c)){ if(c == '\n'){ ++RETcount; } else{ ++CHARcount; } } cout << "RET:" << RETcount << '\n'; //(1) ここの部分が表示されません。 cout << "CHAR:" << CHARcount << '\n';//(2) ここの部分は表示されます。 return 0; } 何故か(1)の部分が表示されません(^^; いきなり(2)の部分が表示されます。 そこで(1)(2)の部分を下記の(3)(4)(5)に書換え cout << "RET:" << RETcount << '\n'; //(3) cout << "RET:" << RETcount << '\n'; //(4) cout << "CHAR:" << CHARcount << '\n'; //(5) 実行した所(4)と(5)の部分は表示されるのですが, (3)の部分が表示されません。 つまりwhile{・・・・・}の直後のcoutが表示されません。 while(cin.get(c))で何かが起こっているのでしょうか????(^^; 使用環境は,Windowsで入力の終了は[Ctrl + Z]で行っています。 ご存知の方どうかご指導よろしくお願いします。

  • 実行

    こんにちは。私は昨日からC++を始めたのですがなかなかうまくいかないためこちらに質問させていただくことにしました。 #include <iostream.h> int main(void) { int x; int y; cout<<"xを入力: 10"; cin>>x; cout<<"yを入力: 2"; cin>>y; cout<<"x+yは"<<x+y<<"です。\n"; return(0); } このようなプログラムを作成したのですが実行してみたところ、 xを入力: 10 これ以降下までいきません。どうすればうまくいくのでしょうか?宜しくお願いします。

  • プロンプト入力 malloc( )

    #include <iostream.h> void f(char* str); main(){ char s[8] = "\0"; cout << "文字を入力" << '\n'; fgets(s, 8, stdin); f(s); } void f(char* str){ char* c; c = (char*)malloc(sizeof(char) * strlen(str)+1); cout << strlen(str) << '\n'; cout << sizeof(c); free(c); } - 結果 - 文字を入力 ( a、Ctrl+Z ) a 1 4 でした。 cout << sizeof(c); の結果は4でした。1バイトの入力だから\0を含めて 2バイトを確保したかった。 そのためにはどうしたらいいんですか? どうして4だったんですか? 文字を入力するとこで、Ctrl+Z の代わりに Enter を押すと Enter まで s に格納されてしまう。 cin を使うと8バイト以上の入力でも s に格納されてしまう。 そうならないためのよい方法があったら教えてください。

  • 数の大きさ

    C++初心者です。以下の様なプログラムで、合計を求めたいのですが、あまり桁数の大きい数だと、正確な値がでません。(20桁とか・・・)これは一体どういうことが考えられますか?//配列の全要素の合計を求める #include<iostream.h> int main(void) { int i; int a[5]={0}.; cout<<"5個の整数値を入力しましょう。 \n"; for(i=0; i<5; i++) { cout<<"No."<<i+1<<": "; cin>>a[i]; } int sum=0; for(i=0; i<5; i++) sum=sum+a[i]; cout<<"合計は"<<sum<<"です。\n"; return(0); }

  • C++

    C++で書いた下記のプログラムが、文字の入力が1023個までなら実行されますが、1024個を超えると実行されません。なぜだか分かる方、教えてください。 #include <iostream> #include <string> using namespace std; int main(void) { string Str; cin >> Str; cout << "here"; }

  • 配列の練習問題

    #include<iostream> using namespace std; //count関数の宣言 int count(char str[], char ch); int main() { char str[100]; char ch; cout << "文字列を入力して下さい。\n"; cin >> str; cout << "文字列から探す文字を入力して下さい。\n"; cin >> ch; int c = count(str, ch); cout << str << "の中に" << ch << "は" << c << "個あります。\n"; return 0; } //count関数の定義 int count(char str[], char ch) { int i = 0; int c = 0; while (str[i]) { if (str[i] == ch) c++; i++; } return c; } こんにちは。 この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。 確認がてらに質問します。 よろしくお願いします。

  • 文字列の処理

    #include <iostream.h> main(){ char x[1]; //ここで あいうえお という5文字を入力 cin >>x; ? } ↑いうえ という文字を cout << で表示するにはどうしたらいいんですか?

  • n進数を10進数に変換するプログラムがわかりません

    整数n(2<=n<=16)とn進数の数字列digitsを与えると10進数に変換して表示するプログラム 関数void base2dec(int n, string digits, int &dec)を使用する 実行例 110101(2)=53 123(8)=83 7ACE(16)=31438 以下はとりあえずつくったみたプログラムです #include<iostream> #include<string> using namespace std; void base2dec(int n, string digits, int &dec) { int i,x=0; for(i=0; i=digits.size()-1; i++) { if(n<10) { x=digits[i]-'0'; } else { x=digits[i]-'A'+10; } dec=(x*n); if(cin >> digits[i++]) { if(n<10) { dec=dec+(digits[i++]-'0'); } else { dec=dec+(digits[i++]-'A'+10); } } } int value = dec; } int main() { int n,value; string digits; cout << "何進数ですか-->"; cin >>n; cout << "数字列を入力してください-->"; cin >>digits;; base2dec(n,digits,value); cout << digits << "(" << n << ")=" << value << endl; return 0; } void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。ちなみにn進数から10進数に直す方法は理解しています。