오류 관련 내용을 보니 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번과 관련한
아스키 코드 표를 참고용으로 첨부합니다
'IT' 카테고리의 다른 글
알고리즘 합병 정렬(merge sort 공부 정리) 백준 2751번 (0) | 2022.02.26 |
---|---|
시간복잡도 개념 정리 (0) | 2022.02.25 |
C언어 백준 4673번 셀프넘버 해설 (0) | 2021.09.01 |
src refspec main does not match any 에러 /git personal token key 입력 에러 (0) | 2021.08.30 |
scanf 오류 해결 방법 (C4996) (0) | 2021.08.30 |