char ba[2];
printf("이름입력::");
scanf("%s",ba);
printf("%s",ba);
이렇게하는데 이믈입력을 2글자 넘어가게해도 잘만 출력되는데 이게가능??
한 다섯글자까지는 잘만 나오던데
한글자밖에 못쓰지않음??
그리고 한긍은 한글자당 2바이트 먹는다는게 트루인가요??
char ba[2];
printf("이름입력::");
scanf("%s",ba);
printf("%s",ba);
이렇게하는데 이믈입력을 2글자 넘어가게해도 잘만 출력되는데 이게가능??
한 다섯글자까지는 잘만 나오던데
한글자밖에 못쓰지않음??
그리고 한긍은 한글자당 2바이트 먹는다는게 트루인가요??
님아 저는 debug 에러가 뜨네요. 버퍼 오버플로 라면서... scanf("%2s", ba); 이렇게 해보면 2글자만 읽는 것인데 한글은 한글자만 입력받네요.
전혀 불가능한건 아닌데 그렇게 쓰면 문제발생하니 쓰지말라는거지
지역변수는 함수로출시 스택에 처넣는데 스택에는 지역변수 뿐만아니라 함수가 끝나고 복귀해야할 복귀주소 같은 것들도 함께 들어가. 그러니까 너가 선언 따로하지않더라도 내부적으로 함수호출에 꼭필요한 정보들이 이미 할당되고 사용되고 있다는겨. 거기를 침범해서 값을 바꾸면 함수가 끝나고 호출원으로 복귀하고 스택을 정리해야하는데 복귀할곳을 잃어버리니 문제가 발생할수 밖에