원래 알기로는
변수형 변수명 = 할당;
이런식으로 알고 있는데
char a[10] =\"\";
하고
strset을 하면
값이 안들어가.
\"\" 대신 \"1234\" 로 하면 들어가고.
이거 할당이 제대로 안되서 그런거 맞지?
그런데 왜 디버그로 잡으면 10개 할당이 다 된것 처럼 보이지?
디버그 걸어서 보면 10개다 0으로 세팅되 있어서..
좀 알려줘.
c 횽은 병신이라고 싸지르고 대답이 없음.
변수형 변수명 = 할당;
이런식으로 알고 있는데
char a[10] =\"\";
하고
strset을 하면
값이 안들어가.
\"\" 대신 \"1234\" 로 하면 들어가고.
이거 할당이 제대로 안되서 그런거 맞지?
그런데 왜 디버그로 잡으면 10개 할당이 다 된것 처럼 보이지?
디버그 걸어서 보면 10개다 0으로 세팅되 있어서..
좀 알려줘.
c 횽은 병신이라고 싸지르고 대답이 없음.
왜 날불러 나도 몰라
헬로 횽은 아니지만 답글좀 달아 보자면, 일단 10개 다 할당된것은, a의 선언을 a[10]으로 했잖음? 그렇게 하면 스택에 a를 위한 공간이 마련되고, 그러니까 할당 된거지. 근데 만약 char *a; a = (char *)malloc(sizeof(char) * 10); 이런식으로 선언하면, 선언할 당시에는 a를 위한 메모리 공간은 마련되지 않고, malloc으로 메모리 얼로케이트를 해줘야 힙에 공간이 마련됨...따라서 a[10]에선 메모리는 할당 되는거...
디사이플/ 답변 고마워. 근데 궁금한점은 \"\"으로 했을때 strset으로 값이 왜 안써지나 하는 부분이양. 알면 가르쳐 주세용. 굽신굽신
strset이랑 strnset써본적이 없어서 라이브러리 뒤져보고 왔다.
http://www.warpspeed.com.au/cgi-bin/inf2html.cmd?..%5Chtml%5Cbook%5CToolkt40%5CXPG4REF.INF+271
보니까 스트링은 초기화 되고 또 \'\\0\'로 끝나야된다는데, 아마, 대부분의 라이브러리 스트링 함수들이 그렇듯이 이 함수도 스트링의 끝을 \'\\0\'로 판단해서 그런걸거야. 그런데 \"\"로 초기화하면 맨 처음부터 \'\\0\'(아니면 0)이잖아? 그러니까 맨 처음 char이 0이니까, 거기가 스트링의 맨 끝이라고 생각하고 건들질 않는거임...아마 맞을거같다
감사
결론은 멜록같은걸로 잡아줘야 한다는것이네.감사감사.