C언어 포인터 문제

netbsd00의 이미지

코드는 이렇습니다.

#include <stdio.h>

void main()
{
	char *tmp;

	scanf("%s", tmp);

	printf("%s", tmp);
}

간단한 위 소스를
XP에서 Visual C++ 6.0으로 컴파일 하여 실행할 경우
오류가 납니다.
하지만 같은 코드를 unix에서 gcc로 컴파일 할 경우엔
제대로 실행이 되는데 도데체 왜 그런지
알수가 없군요.

feanor의 이미지

어떻게 오류가 나나요?

--feanor

moonzoo의 이미지

tmp는 포인터일 뿐이므로

입력값을 저장할려면 메모리를 할당해 주어야 합니다.

가장 간단한 방법은 tmp를 배열로 정의하시는 것.

tmp[100] 정도로 해보세요.

madhatter의 이미지

제대로 실행이 될 리가 없을텐데요. :) 윗 분 말씀대로 메모리 할당이 안되었으므로
컴파일은 될 지 몰라도 실행하면 Segmentation Fault 가 날 겁니다.

qufdl113의 이미지

컴파일러 차이려거니.. 생각하시고여.

정석대로 메모리 할당한후에 프로그래밍 하는게 좋을듯 하네요.

그리고, 위에 코드가 리눅스에서는 세그먼트폴트만 나오지 않을뿐이지, 정상적으로 작동하지는 않네요.