C언어 기초: 문자열 예제(2)

kevinkim2586·2020년 4월 26일
0

C언어

목록 보기
21/23
post-thumbnail

문자열 2번째 문제다.

사용자로부터 비밀번호를 2개 입력 받는다고 가정한다. 이때, 두 번 입력 받은 비밀번호가 동일하고, 비밀번호의 길이가 5이상이고 10이하인 조건을 갖춘다면 Done을 출력하고, 그게 아니라면 Retry를 출력해야 하는 문제다.

이 문자열 문제에서는 이번에 배운 strlen() 함수와 strcmp() 함수를 사용해야 한다.

strlen() 함수는 문자열의 길이를 반환해주고, strcmp() 함수는 두 문자열을 비교해준다.

우선 대략적으로 아래와 같이 끄적여봤다.

입력받은 비밀번호 (문자열)의 길이가 5이상, 10 이하이어야 하기 때문에

if(strlen(pw1)<5 || strlen(pw1)>10)

코드를 넣어줬다. 둘 중 하나라도 충족이 되지 않는다면 Retry를 출력하게 해줘야 한다.

입력 받은 두 문자열을 비교해서 같은지 다른지를 알아내기 위해서는 아래 코드를 삽입했다.

strcmp(pw1,pw2)!=0

첫 번째 비밀번호와 두 번째 비밀번호가 같으면 strcmp() 함수의 반환값은 0이어야 하는데, 그렇지 않으면 같이 않다는 것이니 Retry를 출력하게 하면 된다.

그럼 최종 코드를 보자:


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

int main(){
    
    char pw1[30];
    char pw2[30];
    
    while(1){
        gets(pw1);
        if(strlen(pw1)<5 || strlen(pw1)>10){
            printf("Retry\n");
            continue;
        }
        gets(pw2);
        if(strlen(pw2)<5 || strlen(pw2)>10){
            printf("Retry\n");
            continue;
        }
        
        if(strcmp(pw1,pw2)==0){
            printf("Done\n");
            break;
        }
        else if(strcmp(pw1,pw2)!=0){
            printf("Retry\n");
            continue;
        }
    }
    return 0;
}
profile
공개적으로 학습하고자 만든 블로그

0개의 댓글