에러가 나는 이유가 뭘까요?

romaangel의 이미지

#include
#include
#include

int main()
{
char str[30];
int i;
char *name=(char*)malloc(sizeof(30));

printf("성적\n");
scanf("%s", str);


for(i=0;i<30;i++)
{
name[i]=str[i];
}

printf("%s", name);

return 0;
}

실행하면 마지막에 에러가 납니다.

planetarium의 이미지

제 경우에는 잘 실행 되는데요...
printf("%s", name); 를 printf("%s\n", name); 으로 바꿔주면 완벽하겠지만, 딱히 에러가 나지는 않습니다.

romaangel의 이미지

저같은 경우엔 실행하고 나서 조금 있으면 에러난다고 뿜는데;; 이상하네요;;;;;

snowall의 이미지

어떤 에러인지를 알려주셔야 답이 나올 것 같은데요

--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com

피할 수 있을때 즐겨라! http://melotopia.net/b

bushi의 이미지

sizeof(30) 의 결과가 어떻게 나와야 한다고 생각하시는가요 ?

OTL

planetarium의 이미지

으아... 예리하십니다.

romaangel의 이미지

sizeof가 왜 들어간건지 참;;;;;

shint의 이미지

sizeof(30) == 4
sizeof(355555555555555555) == 8
sizeof(355555555554444445555555) 너무 크면 컴파일에러. error C2177: constant too big

sizeof('a') == 1
sizeof("aa") == 2
sizeof("aaaaaa") == 6 알파벳 갯수만큼.
2048개까지 가능하고. 그이상은 컴파일에러, error C2026: string too big, trailing characters truncated

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com