udi*_*043 2 c arrays structure gets
我正在制作一个程序来接受教师结构中的输入,但存在未知的运行时错误,这是代码 -
#include <stdio.h>
#include <conio.h>
struct Teacher
{
char Name[30];
char Qualifications[20];
int experience_year;
}th[10];
void teacher()
{
int t,i;
printf("Enter how many teachers are in department\n");
scanf("%d",&t);
for(i=1;i<=t;i++)
{
printf("Enter name of teacher : ");
gets(th[i].Name);
printf("Enter qualification of teacher : ");
gets(th[i].Qualifications);
printf("Enter experience_year of teacher : ");
scanf("%d",&th[i].experience_year);
}
for(i=1;i<=t;i++)
{
printf("Details of %d teacher\n",i);
printf(th[i].Name);
printf(" ");
printf(th[i].Qualifications);
printf(" ");
printf("%d",th[i].experience_year);
printf("\n");
}
}
int main()
{
teacher();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是 -
Enter number of teacher
1
Enter teachers name : Enter qualification of teacher :
Run Code Online (Sandbox Code Playgroud)
如何获取老师的姓名(输入)..错误是什么?
用这个:
getchar();
Run Code Online (Sandbox Code Playgroud)
前
gets(th[i].Name);
Run Code Online (Sandbox Code Playgroud)
消耗前导空格和换行符,这些空格和换行符由于之前的语句而留在缓冲区中。
另外,我会推荐fgets,这比gets以下更安全:
fgets(th[i].Name,30,stdin);
Run Code Online (Sandbox Code Playgroud)
和
fgets(th[i].Qualifications,20,stdin);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16296 次 |
| 最近记录: |