前提・実現したいこと
標準入力に与えらた文字をすべて読み取り、その中に現れる英字列と数字列の個数を数えて標準出力にそれらの個数をこの順に書き出すプログラムを作成したいのですが、コンパイルがうまくいかずプログラムを使用できません。
うまく定義ができていないと思われますが教えていただければと思います。
発生している問題・エラーメッセージ
p4-4.c: In function 'main': p4-4.c:7:5: error: redefinition of 'next' int next[3][3] ^ p4-4.c:5:5: note: previous definition of 'next' was here int next[3][3] ^ p4-4.c:14:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'for' for(ch= '0'; ch<='9'; ch++) ^ p4-4.c:14:14: warning: statement with no effect [-Wunused-value] for(ch= '0'; ch<='9'; ch++) ^ p4-4.c:14:27: error: expected ';' before ')' token for(ch= '0'; ch<='9'; ch++) ^ p4-4.c:14:27: error: expected statement before ')' token p4-4.c:19:9: error: 'word' undeclared (first use in this function) number= word= 0; state= 0; ^ p4-4.c:19:9: note: each undeclared identifier is reported only once for each function it appears in p4-4.c:23:9: error: 'action' undeclared (first use in this function) switch( action[state][kind[ch]] ){ ^
該当のソースコード
#include <stdio.h> #include <ctype.h> int main(int argc, char *argv[]){ int next[3][3] = {{0,1,2},{0,1,2},{0,1,2}}; int next[3][3] = {{0,1,2},{0,1,2},{0,1,2}}; int kind[128]= {0}; int ch; int state, number, word for(ch= '0'; ch<='9'; ch++) kind[ch]= 2; for(ch= 'a'; ch<='z'; ch++) kind[ch]= kind[toupper(ch)]= 1; number= word= 0; state= 0; for(; (ch= getchar())!=EOF;){ switch( action[state][kind[ch]] ){ case 0: break; case 1: word++; break; case 2: number++; break; } state= next[state][kind[ch]]; } printf("number:%d\n", number); printf("name:%d\n", word); return 0; }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。