fat*_*mah 2 c struct file fwrite segmentation-fault
如何将值传递给struct变量我试图从用户那里获取员工信息,然后将其写入文件中,但我segmentation fault输入了员工姓名.这是我的代码.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct record_em{
int id;
char name[20];
int salary;
int age;
};
int main( void )
{
struct record_em employee;
FILE *fp;
int id, salary, age;
char name[20];
int n=1;
fp = fopen("empRecord.dat","a");
while(n==1){
printf("\nEnter Employee ID\n");
scanf("%d",&id);
employee.id=id;
printf("\nEnter Employee Name\n");
scanf("%s",name);
employee.name=name;
printf("\nEnter Employee Salary\n");
scanf("%d",&salary);
employee.salary=salary;
printf("\nEnter Employee Age\n");
scanf("%d",&age);
employee.age=age;
fwrite(&employee,sizeof(employee),1,fp);
printf("Enter 1 to add new record \n");
scanf("%d",&n);
}
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出(来自评论):
Fatmahs-MacBook-Air:~ fatmah$ gcc -o em em.c Fatmahs-MacBook-Air:~ fatmah$ ./em Enter Employee ID 88 Enter Employee Name uu Segmentation fault: 11
更改
scanf("%s",name);
employee.name=name;
Run Code Online (Sandbox Code Playgroud)
至
scanf("%s",name);
strcpy(employee.name, name);
Run Code Online (Sandbox Code Playgroud)
更好的是,正如Dukeling&hmjd所建议的那样
scanf("%19s", employee.name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4027 次 |
| 最近记录: |