c - 奇怪的扫描行为
问题描述
所以我完全是 C 的新手。当我遇到非常奇怪的 scanf 行为时,我将开始使用链表。
带有 empname 的 scanf 工作正常。它一直接受输入,直到遇到换行符。
但是,在按 Enter(提供员工姓名后)时,我无法输入员工职业。
并且,例如,我输入 10000 作为员工工资并按 Enter,直到我输入一个随机字符(输入 10000 并按 Enter)并按 Enter 后才会执行 printf 语句。
我尝试针对员工职业只写“%s”而不是“%[^\n]s”,但我面临与第三种情况相同的问题。
在下面附上我的代码以供参考
任何帮助将非常感激!谢谢!
struct empdetails
{
int empid ;
char * empname ;
char * profession ;
int salary;
};
typedef struct empdetails empdet ;
empdet emp1 ;
empdet * emp2 ;
emp1.empid=1 ;
emp1.empname=(char *)malloc(50*sizeof(char)) ;
printf("Enter employee name:") ;
scanf("%[^\n]s\n", emp1.empname) ;
emp1.profession=(char *)malloc(50*sizeof(char)) ;
printf("Enter employee profession:") ;
scanf("%[^\n]s\n", emp1.profession) ;
printf("Enter employee salary:") ;
scanf("%d\n", &emp1.salary) ;
printf("EMPID:%d EMPNAME:%s PROFESSION:%s SALARY:%d", emp1.empid, emp1.empname, emp1.profession, emp1.salary) ;
free (emp1.empname);
free (emp1.profession);