복사해서 컴파일 해본 결과 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);
: // 발견된 행과 검색한 단어를 넘긴다.
:
:
: }
|