문자열 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;
}