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

C/C++ Q/A
[4683] Re:이 소스에 뭐가 문제인지 모르겠써여;;;
진수.네모 [miman101] 1313 읽음    2004-10-05 23:53
복사해서 컴파일 해본 결과 6개의 에러가 발생했어요
에러를 처음 부터차례로 없애 갈께요.

Error E2034 D:\The Study\The C study\The test\b.cpp 47: Cannot convert 'char * *' to 'char *' in function main()
첫번째 에러인데.. 음... 함수 선언에서는 struct Data binarysearch( char *[], char *); 이렇게 했는데
      char *message[10];
      char *word[50];
wordindex = binarysearch(message,word); 이렇게 햇네요.. 무슨 차이점이 보이나요.. word 는 char ** 인데...
함수 선언에서 char * 라고 해서 위와 같은 에러가 나온것 같아요.
해결은 >> char word[50]; 으로 하세요.

이를 고치고 컴파일 하시면 에러가 4개로 줄어 듭니다.

Error E2034 D:\The Study\The C study\The test\b.cpp 58: Cannot convert 'int' to 'char *' in function main()
두번째 에러역쉬 위와 같은 경우에 속하는 거 같아요.
struct Data binarysearch( char *[], char *);
    char inkey;

wordindex2 = binarysearch( message, inkey);  라고 사용하셧네요.. char *로 함수를 정하셧는데. char 를 넘겨줫네요
해결은>> char inkey[50]; 으로 하세요. 문자를 저장하실려고 하시는 거 같아요. 크기는 님이 word[50]으로 하셔서
50으로 정했습니다.

이를 고치고 컴파일 하면 에러가 2개로 줄어 듭니다.

Error E2188 D:\The Study\The C study\The test\b.cpp 63: Expression syntax in function main()
에러 라인으로 가본결과..     getch[];
음... getch(); 이거 겠죠.. ^^;; 잘보세요 차이점이 있죠.

이를 고치고 컴파일 하면 에러가 1개가 남았어요.

Error E2034 D:\The Study\The C study\The test\b.cpp 87: Cannot convert 'char *' to 'char' in function binarysearch(char * *,char *)
맨위에 와 비슷하네요..
struct Data   { int x;   char y;   };

struct Data binarysearch(char *message[10], char *key) 로 함수를 선언하시고..

  temp.y = key; 로 사용하셧네요... 분명 char y로 선언하셧는데... 거기에 char *key 즉, 주소인 key를 대입하셧네요.
잘못된게 보이시죠.. 음... 아마도 단어를 저장하려는 거 같아요
해결 하시려면 우선 >> struct Data   { int x;   char y[50];   };  으로 바꾸세요. 그래도 에러가 계속 될꺼에요...
문자열은 숫자처럼 대입에 의해서는 사용 하실수 없고요 문자열 복사 함수를 사용해야 합니다. strcpy 입니다.
해결은 >> temp.y = key; 를   strcpy(temp.y ,key); 로 바꾸세요..

컴파일 해보시면 에러가 0 입니다. 도움이 되기를 바래요. 
문법적 에러만 잡았지 컴파일후 프로그램이 완벽히 실행된다는 보장은 없답니다. 꼭 성공하시기를..

: #include<stdio.h>
: #include<string.h>
: #include<conio.h>
: #include<stdlib.h>
:
: struct Data
:         {
:         int x;
:         char y;
:         };
: //x는 행 y는 글자
:
: struct Data binarysearch( char *[], char *);
: // 발견된 부분의 행과 단어를 struct Data를 반환
: // char *[] 는 message 를 넘겨받고 char *는 원하는 단어를 넘겨 받는다.
:       char *message[10];
:       char *word[50];
: void main()
: {
:
:
:     FILE *inFile;
:     int i;
:     char inkey;
:
:
:   inFile = fopen("input.txt", "r");
:   if (inFile == NULL )
:     {
:       printf("\n Failed to open the file.\n");
:       exit(1);
:     }
:     // 파일이 존재하지 않을 경우 출력
:
:     while (fscanf(inFile,"%s",&message) != EOF){
:     printf("%-s\n",message);
:     fscanf(inFile,"r",&word);
:     fclose(inFile);
:     }
:
:  //문장의 끝표시(^d)나타날때까지 inFile 에 있는
:  // 문장들 message에 저장
:  // 그리고 message에 저장된 문자열 출력
: // fscanf를 이용하여 inFile에 있는 단어들 word배열로 전달
: struct Data wordindex;
: for(i=0;i<10;++i){
:       wordindex = binarysearch(message,word);
:       printf("\n%-5d %-20s\n", wordindex.x,wordindex.y);
:       }
: // binarysearch함수에 넣는다.
: //그리고 binarysearch 함수에서 그 단어가 어느 줄에 있는지
: //리턴값으로 전달 받는다.
:
:       printf("\n\n Enter a word:");
:     scanf("%s", &inkey);
:
:     struct Data wordindex2;
:     wordindex2 = binarysearch( message, inkey);
: //wordindex2 이진검색 함수로 정의
:     printf("%-10s", message[wordindex2.x]);
: // 리턴 받음 라인값을 받은후 message문자열에 해당하는 그라인 출력
:
:     getch[];
:     fclose(inFile);
:
:
: }
:
: struct Data binarysearch(char *message[10], char *key)
: //이진검색
: {
:    struct Data temp;  //발견된 위치 정보를 가지는 임시변수
:     int i,j;
: char *cptr,*count;    //cptr문자열에서 문자가 발견되는 위치의 주소
:                      
:
:   for( i=0; i< 10; ++i){
:   if((cptr = strstr(message[i],key)) != NULL)
: // message[i][j]에서 key에 맞는 단어가 있는지 확인한다.
: // 이때 결과 주소를 cptr에 대입한다.
: //만약 NULL,즉 단어가 발견되었으?.........?▼?
:
:
: {
:   temp.x =i+1;
:   //발견된 행은 ,i=0이므로 +1를 해주어야 한다.
:   temp.y = key;
:   // 구조체에 y에 검색한key를 넘긴다.
:   count = message[i];
:   // count에 message[i]의 시작주소를 넘긴다.
:   while(count != cptr){
:   //단어가 발견된 주속 cptr하고 같을때 까지 count를 증기시키면서
:   //검사한다.
:       count++;
:     }
:   }
: }
:   return(temp);
: // 발견된 행과 검색한 단어를 넘긴다.
:
:
: }

+ -

관련 글 리스트
4682 이 소스에 뭐가 문제인지 모르겠써여;;; 또 공부하는 사람^^ 1263 2004/10/05
4683     Re:이 소스에 뭐가 문제인지 모르겠써여;;; 진수.네모 1313 2004/10/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.