#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define BLANK ''
#define NEW_LINE '\n'
#define TAB '\t'
#define WORD_MAX 1000

void main()
{
     FILE *fp;
     char fileName[30];
     char *words[WORD_MAX], tWord[30];
    
     int wordNum[WORD_MAX], nw, nc, c, k;
     enum {OUT, IN} wordSW;
    
     printf("입력 파일명을 입력하세요:");
     gets(fileName);
     if((fp=fopen(fileName, "r"))== NULL) //파일을 오픈하지 못할 경우
     {
                            printf("%s를 열수 없으므로 키보드(stdin)에서 문장을 입력하세요. \n", fileName);
                            fp=stdin; //파일 포인터를 표준 입력 장치 stdin으로 정한다
     }
    
     for(k=0; k<WORD_MAX; k++) wordNum[k] = 0; //단어 수 배열을 0으로 초기화
     nw=nc=0; //현재 워드 수와 문자 수 0
     do
     {
              c=getc(fp); //파일 끝 문자가 읽히면 입력 문자 c가 eof(-1)이 된다
              if (c==BLANK || c==NEW_LINE || c==TAB || c==EOF)
              {
                           if(nc>0)
                           {
                                   tWord[nc]='\0';
                                   wordSW=OUT;
                                   for(k=0; k<nw; k++)
                                   if(strcmp(words[k], tWord)==0)
                                   {
                                                       wordSW=IN;
                                                       wordNum[k]++; break;
                                   }
                                   if(wordSW==OUT)
                                   {
                                                  words[nw]=(char *)malloc(nc); strcpy(words[nw], tWord);
                                                  wordNum[nw]=1;
                                                  nw++;
                                   }
                                   nc=0;
                           }
              }
              else
              tWord[nc++] = c;
              }
              while (c != EOF);
              fclose(fp);
              for(k=0; k<nw; k++)
              printf("%30s[%3d]:%3d\n", words[k],