update
[archive.git] / Apkawa / Study / pascal / archive / job1_1 / job1_1.c
blob5303df94b30c8230b40f4577a5029d5859ca337b
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <ctype.h>
4 #include <wctype.h>
5 #define PATH "test.data"
6 #define ALPHA 1
7 #define SPACE 2
8 #define OTHER 3
9 #define START 4
11 /*
12 * Apkawa <apkawa@gmail.com>
15 int main ( int argc, char *argv[] )
17 FILE *in_file;
18 int c;
19 int word_count = 0;
20 int alpha_count = 0;
21 int space_count = 0;
22 int state = START;
23 in_file = fopen( PATH, "r" );
24 while ( state != EOF ){
25 c = fgetc( in_file);
26 // printf("%i ",c);
27 switch (state){
28 case ALPHA:
29 // printf("ALPHA\n");
30 if(isalpha(c)){
31 alpha_count++;
32 break;
34 if(c == ' '){
35 state = SPACE;
36 word_count++;
37 space_count++;
38 break;
40 if (c == EOF){
41 // printf("%i\n",state);
42 state = EOF;
43 break;
45 state = OTHER;
47 case SPACE:
48 // printf("SPACE\n");
49 if (c == ' '){
50 space_count++;
52 if (isalpha(c)){
53 state = ALPHA;
54 alpha_count++;
55 break;
57 if (c == EOF){
58 // printf("%i\n",state);
59 state = EOF;
60 break;
62 state = OTHER;
63 case OTHER:
64 // printf("OTHER\n");
65 if (isalpha(c)){
66 state = ALPHA;
67 alpha_count++;
68 break;
70 if (c == ' '){
71 state = SPACE;
72 space_count++;
73 break;
75 if (c == EOF){
76 // printf("%i\n",state);
77 state = EOF;
78 break;
80 default:
81 if (isalpha(c)){
82 state = ALPHA;
83 alpha_count++;
84 break;
86 if (c == ' '){
87 state = SPACE;
88 space_count++;
89 break;
91 if (c == EOF){
92 // printf("%i\n",state);
93 state = EOF;
94 break;
96 state = OTHER;
99 printf( "%i %i %i\n", word_count, alpha_count, space_count);
103 return EXIT_SUCCESS;
104 } /* ---------- end of function main ---------- */