我是C语言的新手,正在做一些练习,但在while循环中使用gets()时遇到了问题。经过搜索,我认为这可能与\n字符有关,但我希望有人能够更全面地解释一下这里发生了什么:
这个循环只会运行一次 - 它会再次将“输入姓氏”打印到屏幕上,然后在gets()有机会再次获取任何输入之前退出循环:
while (employee_num <= 10)
{
printf("Enter last name ");
gets(employee[employee_num].last_name);
if(strlen(employee[employee_num].last_name) == 0)
break;
printf("Enter first name ");
gets(employee[employee_num].first_name);
printf("Enter title ");
gets(employee[employee_num].title);
printf("Enter salary ");
scanf("%d", &employee[employee_num].salary);
++employee_num;
}
提前感谢您!
gets
函数。该函数已经无法修复,其自身的手册告诉你不要使用它:“决不使用gets()。因为在不事先知道数据量的情况下,无法确定gets()将读取多少个字符,而且gets()会继续存储超出缓冲区末尾的字符,所以使用它非常危险。 它已被用于破坏计算机安全。请改用fgets()。” - ThiefMaster