c언어질문...
푸른마을
c언어질문질문 내용 :
c언어 공부하고있는 한 학생입니다 ^^
근데 문제가 생겼네요 ㅎ
문자열에서
#include stdio.h
#include string.h
main()
{
char s[6] = Hello;
printf(%s\n,s);}
여기까진 이해가거든요? h,e,l,l,o,\0 해서 6개이니깐 6 이고 5하면 오류나고...여기까진 이해가는데
이게 붙어서
strcpy(s,good bye);
printf(%s\n,s);
이렇게 되면
#include stdio.h
#include string.h
main()
{
char s[6] = Hello;
printf(%s\n,s);
strcpy(s,good bye);
printf(%s\n,s);
}
이상태에서 컴파일해봐도 오류없이 잘되요....
hello는 통과되는데 g,o,o,d,b,y,e,\0 까지해서 8개나되는데 6개의 문자칸밖에 준비안했는데 오류없이 실행잘되는 이유가 뭔가요??
그래서 밑에 good bye 에다가 뒤에 아무글자나 덧붙여봤습니다. qweufhwkjghukergh 이렇게 붙였는데도
실행이잘됩니다;; 그면 밑에 플러스되는 문자는 다 씹히고 처음에 있는 hello 문자칸만 준비해두면 밑에는 상관없는건가요??
-
돌심장
제 생각에는, 이 strcpy가 문자열의 마지막에 \\0을 붙여서 그런것 같은데요... 배열 overflow가 생기기는 했지만, 읽을 수 있는 정보까지만 읽는게 아닐까요...
-
매화
컴파일은 물론 잘 되고, 정상 실행은 운빨입니다.
-
보람
그리 하면 불안정한 소스가 되자나요 ㅡㅡ;;
-
흰여울
그건 어쩌다가 재수가 좋아서 잘 된 것입니다.