C의 문자열 처리에 관한 질문입니다.

ShaYEL의 이미지

아래 코드의 결과가 0인 이유가 뭔가요??

#include <stdio.h>
#include <string.h>
 
void main()
{
	char string1[10] = "abcdefg";
	char temp[5];
	sscanf(string1,"%4s",temp);
	printf("%d\n",(temp == "abcd"));
}
kgcrom의 이미지

1이 나오게하려면 '값'을 비교하게해보세요
java의 equals처럼요

흘러가고있는 지금 이 시간에 충실하자.

chanik의 이미지

temp == "abcd" 는 문자열의 값을 비교하는 것이 아니고 서로의 포인터를 비교합니다.
temp[5]는 스택에 있는 공간이고, "abcd"는 리터럴로 별도의 공간에 할당되므로
주소가 일치할 수가 없죠.

내용물을 비교하려면 strcmp(temp, "abcd") 같은 방법으로 할 수 있습니다.
서로 일치하면 0이 반환되고 불일치하면 0이 아닌 값이 반환됩니다.