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

C/C++ Q/A
[4483] Re:파일을 읽어 문자열을 비교하는데...
김시환 [godson2] 1431 읽음    2004-06-10 19:33
if(input == "apple")
이 문장을 언뜻 보면 input 안에 있는 문자열과 "apple" 문자열을 비교한다고
생각하기 쉽지만 사실상 비교하는 것은 input 변수의 첫번째 주소와 "apple"
문자열이 임시로 저장된 메모리의 첫번째 주소를 비교하는 것입니다.
다시 말하면 input 변수의 시작번지가 0x1000 번지라면 input 변수는
a = 0x1000,  p = 0x1001, p = 0x1002, l = 0x1003, e = 0x1004 , \0 = 0x1005
이런식으로 번지가 할당될 것이고

다음에 비교하기 위한 "apple" 문자열 값은 임의 메모리 번지에 할당이 됩니다.
예) a = 0x2000,  p = 0x2001, p = 0x2002, l = 0x2003, e = 0x2004 , \0 = 0x2005

이런식이죠 ..
이 상태에서 if(input == "apple")  이것을 수행하면 실제적으로 CPU는
문자열 자체를 비교하는 것이 아니라 문자열의 첫번째 문자 주소값을 비교하게 됩니다.

if( 0x1000 == 0x2000 )  이런식이 되겠죠.. 그러니 당연히 틀리다고 나오게 됩니다.

이럴때는 if(!strcmp(input,"apple")) printf("OK") ;
해 주시면 됩니다.




초보 님이 쓰신 글 :
: 텍스트 파일에 "apple pie"라는 문자열이 들어있습니다.
: 이걸
:
: char *input;
: FILE *fp;
:
: fp = fopen("input1.txt","r");  // 파일 열기
: while((input = fgetc(fp)) != ' '){
:     printf("%s",&input);
: }
: if(input == "apple") printf("ok");
:
: 이런 코드로 읽어들였는데 화면엔 분명 apple라는 문자열이 표시되는데 if문으로 비교하면 ok 가 않나오는데 왜 그런건가요?
: 조언 부탁드립니다.
:

+ -

관련 글 리스트
4482 파일을 읽어 문자열을 비교하는데... 초보 1624 2004/06/10
4483     Re:파일을 읽어 문자열을 비교하는데... 김시환 1431 2004/06/10
4484         Re:Re:감사합니다.. ^^ 그런데... 초보 1377 2004/06/10
4485             Re:Re:Re:감사합니다.. ^^ 그런데... 김시환 1351 2004/06/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.