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

C++빌더 Q&A
C++Builder Programming Q&A
[5525] Re:[질문] 코드좀 봐줘요......
제라툴 [] 2630 읽음    2001-02-16 23:02
jasmin 님이 쓰신 글 :
: 컴파일하면 에러는 없거든요.  근데 실행하면 이상한 우주의 세계가 펼쳐집니다..
: 3일째 씨름하는데, 이제 그만 손을 들까봐요.......
:
: #include <iostream.h>
: #include<stdio.h>
: #include<conio.h>
: #include<string.h>
:
: int setBrace(char*);
: char settokens(char*, char*);
: main()   {
:
: clrscr();
:
: char setA[20], setB[20];
: char *aPtr, *bPtr, *tokens[40], *btokens[40];
: int braceindex, k;
:
: cout<<"Enter set A"<<endl;
: gets(setA);
: cout<<"Enter set B"<<endl;
: gets(setB);
:
: braceindex=setBrace(setA);
: aPtr=&setA[++braceindex];
:
: braceindex=setBrace(setB);
: bPtr=&setB[++braceindex];
:
:
: settokens(*tokens, aPtr); 
: settokens(*btokens, bPtr);
:
:
: cout<<"AUB is";
: for(int i=0; tokens[i]; i++){             
:  for (int j=0; btokens[j]; j++){    
:  k=strcmp(tokens[i], btokens[j]);
:       if (k==0)
:              cout<<tokens[i];
:         }
:        }
:
: return 0;
: }
:
: int setBrace(char* set){
: int index;
: for (int i=0; set[i]; i++){
: if (set[i]=='{')
: index=i;
:       
: if (set[i]=='}')
: set[i]=NULL;
: }
: return index;
: }
:
:
: char settokens(char* string, char* strPtr){
: char *tokenPtr;
:       
: int count=0;
:
: tokenPtr=strtok(strPtr, ", ");
: while (tokenPtr){
:   string[count]=*tokenPtr;
:          count++;
:   tokenPtr=strtok(NULL, ", "); }
: return *string;
: }
:
:

제라툴 입니다.

우선 소스 코드를 잠깐 보니까여 웅~~ {}로 안에 인수를 받아서(','로 구분되는) setA와 setB의 같

은 값을 찾아 내는 소스 인것 같군요

이 소스는 문법상으로는 잘못된것이 없습니다. 하지만 char settokens(char*, char*); 에서 문제

가 발생하고 있죠.. 우선 파라미터의 첫번째 것을 보면.. 그냥 char* 형인데 실제로 받아 들이는

값은 char ** 또는 pointer 배열 형입니다.

그러므로 char settokens(char* string[], char* strPtr); 로 쳐야 합니다

또 이 함수 소스 안에있는 string[count]=*tokenPtr; 부분을  string[count] = tokenPtr; 로고쳐야

합니다. 그리고 이함수의 return 에서는 정작 필요한 return 값은 count인데 string을 리턴하고

있죠(밑부분의 for문을 돌리기 위해서 필요함) 그러므로 return 값을 int로 바꾸고 다시 int 형 변

수 2개를 선언하여 이 return 값을 저장 해두어야 합니다.

main문 마지막 부분에 있는 for 문에서는 잘못된 부분이 있죠 Exception의 원인은

여기에 있는데.....

for(int i=0; tokens[i]; i++) 부분 ( 그 아래있는것도 맞찮가지임) 에서 새로 많든 int형 변수를

통해 for 문의 가운데 조건문을 tokens < index(index는 settokens함수로 부터 return 받은 값입니

다.) 로 바꾸어야 합니다.

그러면 원하시는 데로 실행이 될거 같습니다.^^

참고하시길...

이상 제라툴이었습니다.

---- 아름다운 청년 제라툴 ----





+ -

관련 글 리스트
5523 [질문] 코드좀 봐줘요...... jasmin 2636 2001/02/16
5525     Re:[질문] 코드좀 봐줘요...... 제라툴 2630 2001/02/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.