아래 코드의 결과가 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")); }
1이 나오게하려면 '값'을 비교하게해보세요 java의 equals처럼요
흘러가고있는 지금 이 시간에 충실하자.
temp == "abcd" 는 문자열의 값을 비교하는 것이 아니고 서로의 포인터를 비교합니다. temp[5]는 스택에 있는 공간이고, "abcd"는 리터럴로 별도의 공간에 할당되므로 주소가 일치할 수가 없죠.
내용물을 비교하려면 strcmp(temp, "abcd") 같은 방법으로 할 수 있습니다. 서로 일치하면 0이 반환되고 불일치하면 0이 아닌 값이 반환됩니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
1이 나오시게하려면 '값'을 비교하게 만드시면
1이 나오게하려면 '값'을 비교하게해보세요
java의 equals처럼요
흘러가고있는 지금 이 시간에 충실하자.
temp == "abcd" 는 문자열의 값을 비교하는
temp == "abcd" 는 문자열의 값을 비교하는 것이 아니고 서로의 포인터를 비교합니다.
temp[5]는 스택에 있는 공간이고, "abcd"는 리터럴로 별도의 공간에 할당되므로
주소가 일치할 수가 없죠.
내용물을 비교하려면 strcmp(temp, "abcd") 같은 방법으로 할 수 있습니다.
서로 일치하면 0이 반환되고 불일치하면 0이 아닌 값이 반환됩니다.
댓글 달기