Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[3100] 키워드 검색 프로그램인데, 에러좀 고쳐주세요.
김윤섭 [yun841105] 1382 읽음    2003-11-17 21:53
현재 구조체 배우는 중인대요. 책보고 키워드 검색 프로그램을 짜봣습니다.
근대 첨보는 에러 메세지가 2개 떠버려서, 머리를 암만 굴려도 해결을 못하고 있습니다. 고수님들
에러좀 잡아주세요 ^_^;;(tc3.0)
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stddef.h>
#define NKEYS(sizeof keytab / sizeof keytab[0])
#define MAXWORD 100

struct key
    {
    char *word;
    int count;
    }
    keytab[]=
    {
    "auto",0,
    "break",0,
    "case",0,
    "char",0,
    "const",0,
    "contnue",0,
    "default",0,
    "unsigned",0,
    "void",0,
    "volatile",0,
    "while",0,
    };
main()
{
    char word[MAXWORD];
    int n;
    while (getword(word,MAXWORD)!=EOF)
        if(isalpha(word[0]))
            if((n=binsearch(word,keytab,NKEYS))>=0)
                keytab[n].count++;
    for (n=0;n<NKEYS;n++)
        if(keytab[n].count>0)
            printf("%4d %s\n",keytab[n].count,keytab[n].word);
    return 0;
}
int binsearch(char *word,struct key *tab,int n)
{
    int cond;
    int low,high,mid;
    low=0;
    high=n-1;
    while(low<high)
    {
        mid=(high-low)/2;
        if ((cond=strcmp(word,tab[mid].word))<0)
            high=mid-1;
            else if (cond>0)
                low=mid+1;
        else
            return mid;
    }
        return -1;
}
int getword(char *word,int lim)
{
    int c,getch(void);
    void ungetch(int);
    char *w=word;
    while(isspace(c=getch()))
    ;
    if (c!=EOF)
        *w++=c;
    if (!isalpha(c))
    {
        *w='\0';
        return c;
    }
    for (;--lim>0;w++)
        if(!isalnum(*w=getch()))
        {
            ungetch(*w);
            break;
        }
        *w='\0';
        return word[0];
}
#define BUFSIZE 100
char buf[BUFSIZE];
int bufp=0;
int getch(void)
{
return (bufp>0)?buf[--bufp]:getchar();
}
void ungetch(int c)
{
    if(bufp>=BUFSIZE)
        printf("ungetch:too many character\n");
    else
        buf[bufp++]=c;
}

+ -

관련 글 리스트
3100 키워드 검색 프로그램인데, 에러좀 고쳐주세요. 김윤섭 1382 2003/11/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.