공머씨의 블로그
내가 실습한 c언어 3. 16~22 본문
// c언어 코딩020 문자열 입출력 gets
#include <stdio.h>
int main(void)
{
char team[10];
puts("-----------------");
puts("*문자열 출력*");
puts("-----------------");
printf("좋아하는 축구팀은:");
gets(team);
printf("축구팀은=%s\n", team);
puts("------------------");
return 0;
}
https://blog.naver.com/woong3164/220633818474
scanf_s오류가 났을떄 왜???
" scanf_s함수는 scanf함수와 다르게 문자와 문자열 입력시에
저장공간에 저장가능한 문자의 갯수를 같이 입력해줘야 합니다. "
[출처] [C언어 코딩학습 016] : 문자 두 개 입출력 - 1|작성자 웅이네
// c언어 코딩020 문자열 입출력 gets
#include <stdio.h>
int main(void)
{
char team[10];
puts("-----------------");
puts("*문자열 출력*");
puts("-----------------");
printf("좋아하는 축구팀은:");
gets(team);
printf("축구팀은=%s\n", team);
puts("------------------");
return 0;
}
Run-Time Check Failure #2 - Stack around the variable '????' was corrupted.
많은 블로그에서 위 오류와 관련하여 '사용자가 설정한 배열보다 더 큰 데이터를 넣으려고 할때' 정도로 말하고 있습니다
좀더 자세히 말하면 '원래 의도한 크기의 자료형 보다 더 큰 자료형의 데이터를 넣으려고 했거나
오타로 인해 의도 하지 않은 데이터가 들어갔거나' 하는 경우죠.
[출처] [오류] Run-Time Check Failure #2 - Stack around the variable '????' was corrupted.|작성자 부산백수
>> 알파벳은 1byte 한글은 2byte이다.
>> 메모리 침범의 오류이다.
>>배열에서 방1개당 1byte로 알고 있는데 맞나요??? 아님 자료형 이 차지하는 바이트 만큼
>> 자료형이 char 이므로 방한개당 1byte이다.
>> 맨처음에 적은 문자는 (맨체스터시티>>26byte)
>> 한글자가 방 2개를 잡게된다. (char을 쓰면 안된다는 것은 아님.)
>>인코딩에 따라 한글 한 글자는 2바이트에서 6바이트 까지 다양할 수 있어요
>> 배열의 길이를 넉넉하게 잡는 방법
>>gets대신 fgets를 쓰면 최대로 받을 길이를 설정 할 수도 있다.
'내가 공부한 3학기 전공 > 내가 실습한 C언어' 카테고리의 다른 글
내가 실습한 c언어 6. 30~35 (0) | 2020.03.15 |
---|---|
내가 실습한 c언어 5. 26~29 (0) | 2020.03.15 |
내가 실습한 c언어 4. 23~25 (0) | 2020.03.15 |
내가 실습한 c언어 2 12~15 (0) | 2020.03.13 |
내가 실습한c언어 1. (0) | 2020.03.13 |