我正在尝试在基本 C 类的基本 ubuntu gcc 编译器中运行以下代码。
#include<stdio.h>
struct emp
{
int emp_num, basic;
char name[20], department[20];
};
struct emp read()
{
struct emp dat;
printf("\n Enter Name : \n");
scanf("%s", dat.name);
printf("Enter Employee no.");
scanf("%d", &dat.emp_num);
//printf("Enter department:");
//fgets(dat->department,20,stdin);
printf("Enter basic :");
scanf("%d", &dat.basic);
return dat;
}
void print(struct emp dat)
{
printf("\n Name : %s", dat.name);
printf("\nEmployee no. : %d", dat.emp_num);
//printf("Department: %s", dat.department);
printf("\nBasic : %d\n", dat.basic);
}
int main()
{
struct emp list[10];
for (int i = 0; i < 3; i++)
{
printf("Enter Employee data\n %d :\n", i + 1);
list[i] = read();
}
printf("\n The data entered is as:\n");
for (int i = 0; i < 3; i++)
{
print(list[i]);
}
return 0;
}
我希望名称接受空格。
当我将值输入结构时,问题就来了。我可以第一次输入名称,但随后的迭代甚至不会提示我输入。
我试过使用fgets
,scanf("%[^\n]",dat.name)
甚至gets()
(我很绝望)但每次都面临同样的问题。
第一个结构的输出很好,但其余的要么是垃圾,要么是人的姓氏,要么是空白。
有任何想法吗?