14581
틀렸던 거 내일 정리해야지.,.
#include <stdio.h>
int main (void){
char str[20];
scanf("%s", &str);
printf(":fan::fan::fan:\n:fan::%s::fan:\n:fan::fan::fan:", &str);
return 0;
}

엉.. 어제의 내가 미뤘으니까 오늘의 내가 해야지..
#include <stdio.h>
int main (void){
char str;
scanf("%s", &str);
printf(":fan::fan::fan:\n:fan::%s::fan:\n:fan::fan::fan:", &str);
return 0;
}


vscode에서는 출력이 잘됐기 때문에 제출해도 괜찮을 줄 알았다 ㅎ
근데 백준에 제출했을 때는 런타임 에러가..ㅜㅜㅜ
일단 char 자체의 성질을 다시 한번 상기시켜 봤을 때
자료형 char가 저장할 수 있는 크기는 1byte 크기이다.
영어 기준 1byte는 1글자이기 때문에 한 글자만 저장할 수 있다..
그래서 백준에서 런타임 에러 (segfault)가 뜬 거 같다 (어 ,,, 뇌피셜이긴 함 ㅎ)
근데,, segfault가 뭔지 잘 몰라서 한 번 알아봤는데,

이렇게 뜨길래 인터넷에 한 번 검색해 봤는데, 좀 더 자세히 다뤄야 할 것 같아서 C언어 공부에서 자세히 다뤄 볼 예정!
간단 요약으로는 메모리에 접근하려고 할 때 허용되지 않는 메모리 영역을 접근하려고 시도할 때 발생하는 오류라고 한다.
(출처: https://velog.io/@ceusun0815/%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98-%EC%98%A4%EB%A5%98Segmentation-Fault%EB%9E%80-C%EC%96%B8%EC%96%B4)
최대한 gpt 안 써보려고 했는데 ㅎㅎ VSCode에서는 왜 되는 건지 궁금해서 ㅎ...
📌 1. char str; vs char str [20];
🔴 문제점scanf("%s", &str);에서 %s는 문자열 입력을 의미하며,문자 여러 개를 \0까지 저장해야 합니다. 하지만 str은 단 1바이트밖에 없어요. 이건 마치 종이 한 장 위에 소설책 전체를 복사하려는 것과 같아요. ✅ 즉, **메모리 침범(Segmentation Fault)**이 발생하는 거죠. 🧪 2. 왜 VSCode에서는 되는 것처럼 보일까?
|
VSCode에서 됐던 게 우연이라니 ㅋㅋㅋ ㅜㅜ
근데 gpt 피셜이라 좀 더 정확하게 알고싶다... ㅜㅜ 근데 인터넷에 쳐봐도 모르겠다 ㅎ,,ㅜㅜㅜ
오늘은 백준 하나만 풀고
C언어 공부를 작성해야겠다..ㅎ ㅜㅜ
'백준' 카테고리의 다른 글
| [ 백준 / C ] 22193번 : Multiply (0) | 2025.07.04 |
|---|---|
| [ 백준 / C ] 2393번 : Rook (0) | 2025.07.03 |
| [ 백준 / C ] 5522번 : 카드 게임 (0) | 2025.07.02 |
| [ 백준 / C ] 9498번 : 시험 성적 (0) | 2025.07.02 |
| [ 백준 / C ] 1809번 : Moo (1) | 2025.07.02 |