IT

C언어 오류 [Run-Time Check Failure #2]

happy_life 2021. 9. 3. 12:50

 

 

오류 관련 내용을 보니 stack 과 연결되어있네요. 아마 데이터 크기에 관련된 버그가 아닐까요?

이는 지역 변수의 주소(포인터)를 이용해서 그 변수에 값 등을 기록하려고 할 때, 

실제로 선언된 크기보다 더 큰 타입으로 입력,기록하려고 할 때 발생하는 버그입니다.

 

문제가 되는 예제
#include <stdio.h>



int main()
{
	printf("백준 11654번문제\n");

	char i;

	scanf("%s", &i);
	printf("%d", i);

	return 0;
}

  char 형으로 변수를 선언하고 string 형의 데이터를 %s인자를 사용해 데이터를 입력받습니다.

여기서 char 는 1byte 이고 %s 는 문자열을 입력받는 인수 인데

문자열은 " "(큰따옴표)로 묶으며 char 포인터나 배열에 저장하여 사용합니다.

 

쉽게 말해 문자열을 입력하기로 해놓고,

문자 하나만 입력하니까 오류가 난 것입니다.

 

#include <stdio.h>



int main()
{
	
	char i;

	scanf("%c", &i);
	
	printf("%d", i);


	return 0;
}

따라서 입력받는 것을 %s(문자열) 이 아닌 %c(문자) 로 바꿔주었습니다.

 

 

 

참고로 백준 11654번과 관련한

아스키 코드 표를 참고용으로 첨부합니다