구조체 문제 간단한거 질문올립니다.
한별나라
질문 제목 :구조체 문제 간단한거 질문올립니다.질문 내용 : 구조체 하나를 선언하고 구조체 변수는 종업원의 이름, 주민등록번호, 연봉을 저장할 수 있어야 하는데요.
일단 제가 작성한 소스 코드는#includestdio.h
#includestdlib.hstruct employee{
char name[10];
char number[15];
int money;
}p1, p2;
int main(void){
// employee 1
fputs(이름: , stdout);
fgets(p1.name, sizeof(p1.name), stdin);
fputs(주민: , stdout);
fgets(p1.number, sizeof(p1.number), stdin);
fputs(연봉: , stdout);
scanf(%d, &p1.money); // employee 2
fputs(이름: , stdout);
fgets(p2.name, sizeof(p2.name), stdin);
fputs(주민: , stdout);
fgets(p2.number, sizeof(p2.number), stdin);
fputs(연봉: , stdout);
scanf(%d, &p1.money); // print
printf(이름: %s\n, p1.name);
printf(주민: %s\n, p1.number);
printf(연봉: %d\n\n, p1.money); printf(이름: %s\n, p2.name);
printf(주민: %s\n, p2.number);
printf(연봉: %d\n, p2.money); return 0;
}입니다.
그런데 컴파일 오류는 없지만, 이상한 점이 있더군요.
프로그램 실행시 첫번째employee 1는 모두 다 잘 저장 됩니다. 그런데employee 1의 마지막 연봉을 입력하고 엔터를 치는 순간employee 2의 이름입력하는 것을 넘어가고 주민쓰는걸로 넘어가지더군요. 마지막에 다 출력해보면employee 2의 이름은 공백으로 나오더군요. 무엇이 잘못 되었는지 잘 모르겠어서 이렇게 질문 올려봅니다.그리고 한가지더 질문을 덧붙여 보자면,
fgets함수는 문자열을 입력받는 함수이기에 fgets로 함수를 입력받을시 마지막은 무좋곤 null문자로 채워진다고 들었습니다. 그러니깐 abcdef라는 6개의 문자열을 저장할 수 있는 배열 선언시 null문자까지 포함해서 char arr[7]이런식으로 선언해야 된다더군요. 그런데 재가 어디서 들었던 기억으론 엔터키까지 저장한다는 함수도 있다던데 혹시 그게 fgets함수 인가요?