• 북마크
타입문넷

질문게시판

[컴퓨터_인터넷] C언어 프로그래밍 관련 질문입니다.

본문

일단 프로그램 코드는 이렇습니다.


#include <stdio.h>
#include <string.h>

int main(void){  
   
    int  i=0;
    char *in=new char[100];    
    char *ans = "bicycle";   
    char *string[20]={{"not a living ting."},{"It's solid and yielding"},{"It can exercise."},{"It moves by passive"},{"It has a foothold."},{"Not raining"},{"It can have horn."},{"It's expensive"},{"It has basket."},{"It has two legs."},{"It has a brake."},{"It can carry two people."},{"It has gear."},{"It has a wheel."},{"It has a cover"},{"It has many kinds of things."},{"It can painted by any color."},{"It can used by anyone."},{"It has a hole."},{"It's fun."} }; 
   
    while(i<20){  
        printf("답을 입력: ");
        scanf("%s", in);
        fflush(stdout);  
       
        if(strcmp(ans,in) == 0){  
            printf("excellent! %d번만에 맞추셨습니다.\n",i+1); 
            break;  
        }
        else
            printf("%d. %s\n",i+1, string[i]);


        i++; 


        if(i==20) 
            printf("스무고개가 끝이 났습니다. 더이상 힌트는 없습니다.\n"); 


    }


    return 0;
}                                   




여기서 궁금한 게 왜 FOR 반복문이 아니라 WHILE 반복문을 사용한 건가요? 꼭 WHILE 반복문을 사용하는 이유라도 있나요? 그리고 strcmp()에 대해서 조금만 자세히 설명해주시면 좋겠습니다. 두 문자열을 비교하는 함수라는 건 알겠는데 역시 잘 모르겠더군요.

  • 1.88Kbytes
0
로그인 후 추천 또는 비추천하실 수 있습니다.
profile_image
포인트 100
경험치 9,307
[레벨 14] - 진행률 15%
가입일 :
2008-01-17 23:38:44 (5960일째)
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 1

루트님의 댓글

profile_image
for문 사용해도 상관없습니다.<br>for(i=0;i&lt;20;i++){...} 이라도 같으니까요.(이경우 위에 int i=0; 초기화는 필요없겠죠. 그냥 int i; 해도 됩니다.)<br><br>strcmp()는, (string compare라고 읽음) 두개의 문자열을 받아서(정확히는, 문자열의 '주소값', 또는 그 주소값을 가리키는 포인터를 받습니다.) 둘중 어느 문자열이 앞에 오는지를 비교해서 integer(정수)값을 리턴값을 정해줍니다.<br>왼쪽문자열이 빠르면 -1을, 둘다 같으면 0을, 오른쪽 문자열이 빠르면 1을 리턴해줍니다.<br>예를 들어,<br><br>int a;<br>a=strcmp("apple","banana")일 경우,<br>apple 이 banana보다 사전상에서 먼저 오므로, -1을 리턴해줍니다.<br>(왼쪽 문자열이 먼저오므로 -1)<br>즉 a를 출력하면 -1이 나오지요.<br><br>a=strcmp("apple","apple")일 경우, 두 문자열이 같으므로, 0을 리턴합니다.<br>a를 출력하면 0이 나옵니다.<br><br>a=strcmp("banana","apple")일 경우,<br>

banana는 apple보다 사전상에서 뒤에 오므로, 1을 리턴해줍니다.<br>(오른쪽 문자열이 먼저오므로 1)<br>a를 출력하면 1이 나옵니다.<br><br>문자열의 순서 비교는 각 문자의 아스키 코드값을 비교하여 진행되는데,<br>대문자와 소문자의 아스키 코드값이 따로 정해져 있습니다.<br>예를 들자면 A는 65, a는 97의 값을 가집니다.<br>B는 66, b는 98 이런 식으로 가지요.<br>대문자가 소문자보다 순서에서 빠릅니다.(아스키 값이 작습니다.)<br>A~Z까지는 65~90. a~z까지는 97~122까지의 값이 배정되어 있습니다.<br><br>따라서,<br>a=strcmp("Apple","apple")일 경우,<br>



A(65)가 a(97)보다 값이 작으므로(먼저 오므로), -1을 리턴해줍니다.<br>

(왼쪽 문자열이 먼저오므로 -1)<br>

a를 출력하면 -1이 나옵니다.<br>
전체 26,158 건 - 1229 페이지
제목
GhostX-9 4,785 0 2010.05.31
잉꼬사만코 3,552 0 2010.05.31
아리에타 3,484 0 2010.05.31
STW님 3,531 0 2010.05.31
아르딘 3,509 0 2010.05.31
윈터어썰트 2,999 0 2010.05.31
치르코 3,139 0 2010.05.30
치르코 4,257 0 2010.05.30
viggy 3,218 0 2010.05.30
떠돌이 3,536 0 2010.05.30
망고 3,472 0 2010.05.30
레존드달묘 3,583 0 2010.05.30
아라시엘 3,799 0 2010.05.29
밥딜 2,980 0 2010.05.29
복돌이사냥 3,695 0 2010.05.29