kall님이 먼저 답변을 해주신 부분에 있죠. 경고가 나온다는...
어차피 aa가 array라면 krisna님의 strlen이 적절하지 않나 싶네요.
한가지...
대부분의 str... ()함수의 경우 길이가 지정되지 않는 함수에서 일어날 수 있는 에러가
있습니다. segment fault가 바로 그것인데 strcpy같은 함수에서 가끔 발생을
합니다. 이런 길이를 지정하지 않고 사용하는 함수들은 사용하실때 꼭 주의해서
사용하는게 좋습니다. 될 수 있으면 strncpy와같은 함수를 이용하는게 좋겠죠.
예전에 깜밖깜밖해서 자주 겪었던 문제라서... :)
kall님이 먼저 답변을 해주신 부분에 있죠. 경고가 나온다는...
어차피 aa가 array라면 krisna님의 strlen이 적절하지 않나 싶네요.
한가지...
대부분의 str... ()함수의 경우 길이가 지정되지 않는 함수에서 일어날 수 있는 에러가
있습니다. segment fault가 바로 그것인데 strcpy같은 함수에서 가끔 발생을
합니다. 이런 길이를 지정하지 않고 사용하는 함수들은 사용하실때 꼭 주의해서
사용하는게 좋습니다. 될 수 있으면 strncpy와같은 함수를 이용하는게 좋겠죠.
예전에 깜밖깜밖해서 자주 겪었던 문제라서... :)
array의 이름을 == 비교연산자 옆이나 = 대입(?) 연산의 오른쪽에
array의 이름을 == 비교연산자 옆이나 = 대입(?) 연산의 오른쪽에서 사용하시면 array의 첫 요소의 주소가 튀어나오게 됩니다.
내용이야 어쨌든 array의 주소는 NULL이 아닌가 봅니다.
어떻게 해야 널로 나올 수 있을까요
어떻게 해야 널로 나올 수 있을까요
if(aa == 0 ) { 이렇게 해도 안되네요.
if(aa == 0 ) {
이렇게 해도 안되네요.
비교를 하실려고 하는게 그 주소에 대한 값이 아닌가요 ?그러므로 aa
비교를 하실려고 하는게 그 주소에 대한 값이 아닌가요 ?
그러므로 aa==NULL 이 아니고 aa[0]==NULL, 또는 *aa==NULL 이라고 해야 올바른것 같습니다.
aa==NULL 이라고 하면 aa 의 주소가 널이 아니기 때문에..
결과는 당연한것 같습니다만.
=================================
:: how about a cup of tea ? ::
=================================
[code:1]if ( aa[0] == NULL &
if ( aa[0] == NULL ) {
로 바꾸시면 경고가 나지만 돌기는 돕니다. 원하시는 내용이 스트링의 존재유무라면string.h를 포함해서
if ( strcmp(aa, "\0") == 0 ) {
정도면 되지 않을지..----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ
감사합니다. 해결할 수 있겠네요..
감사합니다. 해결할 수 있겠네요..
아. 이 주소값에 아무것도 없다면 0 인가요 NULL 인가요?
아. 이 주소값에 아무것도 없다면 0 인가요 NULL 인가요?
if (strlen(aa)) {} else {}
if (strlen(aa)) {
} else {
}
[code:1]if( aa[0] == '\0'
이건 왜 없죠??
저는 맨 앞 한바이트만 널문자와 비교하는 식을 주로 쓰는데요. ^^;
더 이상 없다.
[quote="k2hyun"][code:1]if( aa[
kall님이 먼저 답변을 해주신 부분에 있죠. 경고가 나온다는...
어차피 aa가 array라면 krisna님의 strlen이 적절하지 않나 싶네요.
한가지...
대부분의 str... ()함수의 경우 길이가 지정되지 않는 함수에서 일어날 수 있는 에러가
있습니다. segment fault가 바로 그것인데 strcpy같은 함수에서 가끔 발생을
합니다. 이런 길이를 지정하지 않고 사용하는 함수들은 사용하실때 꼭 주의해서
사용하는게 좋습니다. 될 수 있으면 strncpy와같은 함수를 이용하는게 좋겠죠.
예전에 깜밖깜밖해서 자주 겪었던 문제라서... :)
------------------------------
좋은 하루 되세요.
[quote="codebank"][quote="k2hyun"][code:
이것과
는 다른데요. -Wall 로 컴파일해도 아무런 경고 없습니다.
NULL 은 포인터 타입이기 때문에 저렇게 비교하면 경고가 나오지요. :)
더 이상 없다.
[code:1]#include <stdio.h>#inc
스트링의 존재 유무를 의도하셨다면 이것도 괜찮을 것 같네요.
그리고 printf 부분에 모두 \n이 없던데..
프로그램이 종료되기 전 \n이 한 번도 나오지 않으면 출력이 안되는 경우도 있습니다.
그리고 main 함수는 반환값을 int로 명시해주는 것이 좋지 않을까 싶구요..
[quote="mudori"]아. 이 주소값에 아무것도 없다면 0 인가요
aa 자체가 aa 배열의 첫 번째 아이템(aa[0])의 주소를 가리키는 상수이기 때문에 aa 배열에 의미 있는 값이 들어있든 쓰레기 값이 들어있든 또는 100개의 '\0'이 들어있든 aa는 0이나 NULL 값을 가질 수 없습니다.
1. NULL은 주소에 대한 macro입니다. 포인터가 NULL인지 아닌
1. NULL은 주소에 대한 macro입니다. 포인터가 NULL인지 아닌지 검사하기 위해서 쓰일 수 있지만, 포인터가 가리키는 값과 비교하는 건 의미가 없습니다. (char 형이 아닙니다.)
2. 길이가 0인 문자열은 ""입니다. "\0"이 아니고요.
정말 감사합니다. ..
정말 감사합니다. ..
댓글 달기