c语言 结构体 字符串输入输出
发布网友
发布时间:2022-10-22 04:39
我来回答
共3个回答
热心网友
时间:2024-07-10 20:19
楼至你好!!!
其实我们在声明任何指针变量的时候,只是告诉编译器它的类型,名字。并不为其分配空间。
楼主定义全局结构体指针变量p,但没有为其分配空间,就用到了p->name,当然就会出错。
只需要在main()函数的开头为其分配空间即可。例如:
p=(struct student*)malloc(sizeof(struct student));
热心网友
时间:2024-07-10 20:19
改成如下,已经调试过了。
#include<stdio.h>
struct student
{
char name[16],gen;
int empNo;
float hour,rate;
};
void main()
{
student abc,*p;
*p=abc;
int i;
float link=1.0;
char c,n[16];
FILE *fp;
fp=fopen("wagess.inf","w");
if(!fp)
printf("\nError");
scanf("%f",&link);
for(i=0;i<1;i++)
{
printf("Input the %dth person's statistics:\n",i+1);
c=getchar(); //接收上一个‘\n’
gets(p->name); //运行到这里 *p->name='G' 但p->name=NULL 为什么啊?
printf("EmployNo. Gender Rate Hour\n");
scanf("%d %c%f%f",&p->empNo,&p->gen,&p->rate,&p->hour);
fprintf(fp,"%-15s%d %c %-5.2f %-4.1f\n",p->name,p->empNo,p->gen,p->rate,p->hour);
}
fclose(fp);
}
热心网友
时间:2024-07-10 20:19
程序中定义了一个全局结构体指针变量,但是程序体中并没有对这个指针申请空间,我想是这个错误。