gcc에서 세그먼트 폴트가 나는이유

geneven의 이미지

#include <stdio.h>

main(int argc, char *argv[])
{
printf("%s", *argv[1]);
}

요렇게 했는데 gcc로 컴파일하고 컴파일 한 명령뒤에 33, afe 등등을 붙이면
세그먼트폴트 에러가 나거든요? 그냥 명령어만 치면 정상적으로 되고요.

kall의 이미지


#include <stdio.h> 

main(int argc, char *argv[]) 
{ 
        printf("%s", argv[1]); 
} 

*argv[] 는 이중배열입니다.

----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ

wind772의 이미지

#include <stdio.h>

main(int argc, char *argv[])
{
      printf("%s", *argv[1]);
}

위에서 *argv[]란 문자열의 배열을 뜻하는 것입니다.
즉, *argv[], **argv 이렇게 쓸수 있죠...

위의 소스에서 쓰신 *argv[1]이란 것은 argv[1][0]이 가리키는 곳과 같습니다.
즉 문자열이 아닌 한 문자죠.....
그런데 "%s" 를 이용해 찍었으니 오류가 나죠...^^

===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.