前提・実現したいこと
C言語勉強中です。
テキスト : 新・明解 C言語 入門編
演習8-9 : 標準入力に現れた行数をカウントするプログラムを作成せよ。
#include <stdio.h> int main(void) { int i, ch; int cnt[10] = {0}; do { printf("入力してください. : "); } while ((ch = getchar()) != EOF); { switch (ch) { case '0' : cnt[0]++; break; case '1' : cnt[1]++; break; case '2' : cnt[2]++; break; case '3' : cnt[3]++; break; case '4' : cnt[4]++; break; case '5' : cnt[5]++; break; case '6' : cnt[6]++; break; case '7' : cnt[7]++; break; case '8' : cnt[8]++; break; case '9' : cnt[9]++; break; } } puts("\n数字文字の出現回数"); for (i = 0; i < 10; i++) printf("'%d' %d\n", i, cnt[i]); return 0; } <結果> 1354687 15847987 146354135468 1354684532 1354684 13536569879645132 1323854687645132 6897542312086452 13584874512 1325878964512 963852741 01248563 ^Z 数学文字の出現回数 '0' 2 '1' 17 '2' 12 '3' 17 '4' 19 '5' 20 '6' 15 '7' 9 '8' 17 '9' 6
###(私の作成イメージ)
<結果> 1354687 15847987 146354135468 1354684532 1354684 13536569879645132 1323854687645132 6897542312086452 13584874512 1325878964512 963852741 01248563 ^Z 数学文字の出現回数 '0' 2 '1' 17 '2' 12 '3' 17 '4' 19 '5' 20 '6' 15 '7' 9 '8' 17 '9' 6 入力行数は12行です。
自作コード
C
1#include <stdio.h> 2int main(void) 3{ 4 int i, ch; 5 int line_count = 0; 6 int cnt[10] = {0}; 7 8 do 9 { 10 printf("入力してください. : "); 11 } 12 while (scanf(ch = getchar()) != EOF && ++line_count); 13 { 14 switch (ch) 15 { 16 case '0' : cnt[0]++; break; 17 case '1' : cnt[1]++; break; 18 case '2' : cnt[2]++; break; 19 case '3' : cnt[3]++; break; 20 case '4' : cnt[4]++; break; 21 case '5' : cnt[5]++; break; 22 case '6' : cnt[6]++; break; 23 case '7' : cnt[7]++; break; 24 case '8' : cnt[8]++; break; 25 case '9' : cnt[9]++; break; 26 } 27 } 28 29 puts("\n数字文字の出現回数"); 30 for (i = 0; i < 10; i++) 31 printf("'%d' %d\n", i, cnt[i]); 32 33 printf("\n入力行数は%d行です。", line_count); 34 35 return 0; 36}
発生している問題・エラーメッセージ
enshu8-9.c:13:15: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion] while (scanf(ch = getchar()) != EOF && ++line_count); ^~~~~~~~~~~~~~ C:\BCC101\bin..\include\windows\crtl\stdio.h:301:49: note: passing argument to parameter '__format' here int _RTLENTRY _EXPFUNC scanf(const char * __format, ...);
お願い
C言語を勉強し始めて3か月近く経ちましたが、まだ壁にぶつかっています。
いきなり答えを書かずに解説、ヒントを書いてほしいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー