구조체의 값을 읽고 인쇄하는 프로그램을 작성했습니다. 나는 scanf가 char를 제외하고 모든 kinf에 대해/n을 무시한다고 생각했지만 아래 프로그램을 실행하고 첫 번째 입력을 정수로 제공 할 때. 나는 이름 변수를위한 o/p를 얻지 못한다. 왜??scanf의 개행 문자
#include <stdio.h>
#include <string.h>
struct employee
{
int empno;
char name[10];
float p_money;
};
int main()
{
struct employee e;
struct employee *ptr;
ptr = &e;
printf("please enter the empno \n");
scanf("%d", &(ptr->empno));
printf("please enter the name \n");
gets(ptr->name);
//scanf("%d", &(ptr->empno));
printf("please enter the money \n");
scanf("%f", &(ptr->p_money));
printf("Roll No: %d\n", ptr->empno);
printf("Name: %s\n", ptr->name);
printf("Money: %f\n", ptr->p_money);
getchar();
return 0;
}
실행 :
please enter the empno
10
please enter the name
please enter the money
100.99
롤 번호 : 10 이름 : 돈 : 100.989998
please enter the empno
10jackal
please enter the name
please enter the money
100.99
롤 번호 : 10 이름 : 자칼 돈 : 100.989998
당신이 얻은 결과와 정확히 어떤 결과가 기대됩니까? –
IMO C++ 태그가 없어야합니다. –
이미 많은 문제가 있습니다. 문제는 scanf ("% d")가 입력 버퍼에 후행 줄 바꿈을 남긴 다음 gets()가 그 왼쪽 끝 줄 바꿈 문자를 (매우 짧은) 줄로 읽는다는 것입니다. –