반응형
많은 사람들이 아래와 같은 코드 문제를 해결하기 위해 이 글을 클릭했을 것이다.
분명히 변수 input에 love를 저장하고 if문을 사용하여 문자열 "love"를 비교하는 코드를 작성했는데 생각처럼 되지 않는다.
#include <stdio.h>
int main()
{
char input[] = "love";
if(input == "love"){
printf("love");
}else{
printf("not love");
}
return 0;
}
|
그 이유는 == 연산자를 사용하여 문자열을 비교하는 것은 문자열을 비교하는 것이 아니라 배열 input과 문자열 love의 주소값을 비교하기 때문이다. 이 문제를 해결하기 위해서는 strcmp()함수를 사용하면 쉽게 해결할 수 있다. 함수 이름은 문자열을 비교하다(string compare)에서 따왔다.
#include <stdio.h>
int main()
{
char input[] = "love";
int result = strcmp(input, "love");
printf("%d", result);
return 0;
}
|
위 코드는 strcmp()함수를 사용하여 input변수에 들어있는 문자열과 "love"를 비교하고 리턴값을 result에 저장 후 출력하는 코드이다.
실행해보면 결과 값으로 0이 출력이된다. 비교하는 문자열이 같으니 일반적으로 생각했을 때 1이 출력되어야 할 것 같지만 strcmp()함수는 비교하는 대상이 같을 때 0을 리턴하는 함수이기 때문이다.
#include <stdio.h>
int main()
{
char input[] = "love";
int result = strcmp(input, "love");
if(!result){
printf("love");
}else{
printf("not love");
}
return 0;
}
|
if문 조건값에 not 연산자인 !를 붙인 이유는 방금 말했듯이 비교하는 대상이 같으면 0을 리턴하므로 ! 연산자를 사용하여 논리값을 뒤집어서 1로 만들기 위함이다.
반응형
'언어 > C언어' 카테고리의 다른 글
[C언어] Queue 구현하기 (0) | 2020.04.01 |
---|---|
[C언어] 공약수 찾는 방법 (0) | 2020.03.23 |
[C언어] 약수 구하는 방법 (0) | 2020.03.21 |
[C언어] 버블 정렬(Bubble Sort) 구현하는 방법 (0) | 2020.03.13 |
[C언어] 랜덤으로 숫자를 뽑아서 평균 구하는 방법 (feat. sizeof()) (0) | 2020.03.13 |