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

C/C++ Q/A
[6038] Re:이 간단한 프로그램 어디가 잘못인가요?
cc1232 [cc1232] 2289 읽음    2007-07-16 18:44
못 찾는 게 정상적인 경우로 보입니다.

if(find.str[i]==charStr) {

이런 구문은 문자열을 비교하는 것 같지만, 문자열을 비교하는 게 아니라 문자열의 주소값이 같은가 비교하는 것입니다
따라서 배열에 넣은 "computer"라는 문자열의 주소값과 별도로 비교한 "computer"라는 문자열의 주소값이 같으면 실행되고, 다르면 실행되지 않습니다. 두 문자열의 내용은 같습니다. 같은 내용이 두 군데의 메모리에 있는 것이죠

문자열의 내용이 같은가를 비교하시려고 한다면,
위에 #include <string.h>를 해주시고
이 부분 대신
if(find.str[i]==charStr) {
이 부분을 넣어주세요
    if ( strcmp( find.str[i], charStr ) == 0 ) {

strcmp는 두 문자열의 내용을 비교하는 함수로 같으면 0, 틀리면 0이외의 값이 나옵니다.

chqh 님이 쓰신 글 :
: main에서
: find.FindView(300); 이 경우는 제대로 찾아주는데요
: find.FindView("computer"); 를 찾지못하고 그냥 프로그램이 끝나고 말아요
:
: 어느 책 부록 CD의 프로그램을 재미로 돌려보다가 이해가 안되서
: 이리 질문해봅니다
:
: ---------------------------------------------------------------------
:
: // Find.cpp : Defines the entry point for the console application.
: //
:
: // #include "stdafx.h"
: #include <iostream.h>
:
: class CFind
: {
: private:
:     int num[5];
:     char* str[5];
: public:
:     CFind();
:     ~CFind();
:     void FindView(int number);
:     void FindView(char* charStr);
: };
:
: CFind find;
:
: CFind::CFind()
: {
:     find.num[0]=100;
:     find.num[1]=200;
:     find.num[2]=300;
:     find.num[3]=400;
:     find.num[4]=500;
:     find.str[0]="book";
:     find.str[1]="press";
:     find.str[2]="student";
:     find.str[3]="uni";
:     find.str[4]="computer";
: }
:
: CFind::~CFind()
: {
: }
:
: void CFind::FindView(int number)
: {
:     for(int i=0; i<5; i++)
:         if(find.num[i]==number) {
:             cout << "Found number.";
:             cout << find.num[i];
:             cout << "\n";
:             break;
:         }
: }
:
: void CFind::FindView(char* charStr)
: {
:     for(int i=0; i<5; i++)
:         if(find.str[i]==charStr) {
:             cout << "Found string.";
:             cout << find.str[i];
:             cout << "\n";
:             break;
:         }
: }
:
: void main(void)
: {
:     find.FindView(300);
:     find.FindView("computer");
: }

+ -

관련 글 리스트
6037 이 간단한 프로그램 어디가 잘못인가요? chqh 2495 2007/07/15
6038     Re:이 간단한 프로그램 어디가 잘못인가요? cc1232 2289 2007/07/16
6041         Re:Re:이 간단한 프로그램 어디가 잘못인가요? chqh 2363 2007/07/16
6042             Re:Re:Re: 신정아 교수에 관하여 chqh 2685 2007/07/16
6043                 Re:Re:Re:Re: 신정아 교수에 관하여 cc1232 2612 2007/07/17
6044                     Re:Re:Re:Re:Re: 신정아 교수에 관하여 chqh 2474 2007/07/17
6048                         Re:Re:Re:Re:Re:Re: 신정아 교수에 관하여 외랑 2405 2007/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.