구조체^^
강남맨
#include stdio.h
#include string.h
typedef struct{
char name[30];
int age;
char score[8];
} Student;
void main(void)
{
Student s;
printf(이름 : );
scanf_s(%s, s.name, sizeof(s.name));
printf(나이 : );
scanf_s(%d, &s.age);
printf(성적 : );
scanf_s(%s, s.score, sizeof(s.score));
printf(이름 : %s, 나이 : %d, 성적 : %s\n, s.name, s.age, s.score);
}
이와 같은 프로그램에서 scanf_s이 함수에 왜 s.name만 쓰는게 아니고 sizeof와 함께쓰는 거죵 ? 안하면 오류가 뜨더라구요..
scanf_s==scanf로 비주얼 2005를 써서 쓴것입니다.
-
로지
고야케 // 질문 게시판에 질문해 주세요.
-
알
호오 몰랐던 사실인데..ㅎㅎ 기억해둬야겠네요
-
마음새
와핫 감사해용 ㅜㅜ 책에도 없더라구용 ㅜㅜ 내가 못찾앗나 ?ㅋㅋㅋ ㅜㅜ 여튼 감사들여용 ㅋㅋ
-
희미햬
기존의 scanf()함수는 함수 자체적으로 버퍼라는 공간을 가지고 있으면서 입력되는 데이터를 버퍼에 저장하였다가 해당 변수의 주소로 데이터를 넘기는 형식을 취했습니다.
그런데 사용자 입력이 버퍼의 크기보다 커질 경우에는 버퍼 오버 플로우라고 하여 오류가 발생하게 됩니다. 버퍼 오버 플로우가 심하게 되면 시스템이 무력화될 수도 있습니다.
그래서 요즈음의 비주얼 스튜디오는 scanf()나 strcpy() 등의 함수 대신에 _s가 붙은 함수를 쓰도록 권유하고