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

C/C++ Q/A
[6041] Re:Re:이 간단한 프로그램 어디가 잘못인가요?
chqh [huniper] 2365 읽음    2007-07-16 22:33
못 찾는 게 정상적인 경우로 보입니다.
==> 사실은 나름대로 소스를 이리 저리 바꾸어 보면서 테스트 햇는데 못찻앗읍니다
못찾는게 정상이엇군요.

그 책 본문의  소스와  부록 CD 의 소스는 같앗읍니다
저자가 제대로 테스트 안하고 책에 포함햇나 보네요

cc1232 님이 쓰신 글 :
: 못 찾는 게 정상적인 경우로 보입니다.
:
: 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 2496 2007/07/15
6038     Re:이 간단한 프로그램 어디가 잘못인가요? cc1232 2290 2007/07/16
6041         Re:Re:이 간단한 프로그램 어디가 잘못인가요? chqh 2365 2007/07/16
6042             Re:Re:Re: 신정아 교수에 관하여 chqh 2686 2007/07/16
6043                 Re:Re:Re:Re: 신정아 교수에 관하여 cc1232 2612 2007/07/17
6044                     Re:Re:Re:Re:Re: 신정아 교수에 관하여 chqh 2475 2007/07/17
6048                         Re:Re:Re:Re:Re:Re: 신정아 교수에 관하여 외랑 2407 2007/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.