C语言问题:下面是结构体和一个子函数,单步执行到 fscanf 时,程序直接跳到了下一行,fscanf 不执行!求教
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题:下面是结构体和一个子函数,单步执行到 fscanf 时,程序直接跳到了下一行,fscanf 不执行!求教相关的知识,希望对你有一定的参考价值。
运行环境 TC3.0
struct subject
long c_num; // 课程编号
char c_name[20]; // 课程名称
char c_kind[15]; // 课程性质
int c_period_1; // 授课学时
int c_period_2; // 实验或上机学时
float c_score; // 课程学分
int c_term; // 开课学期
struct subject *next;
;
void c_input() // 录入课程信息
struct subject *p1,*p2;
FILE *fp;
c=0;
clrscr();
if((fp=fopen("c_file","wb"))==NULL)
printf("Can't open the file\n\n");
printf("Press any key to return ");
getch();
return;
printf("Please input the information of course:\n\nnum\tname\tkind\tperiod_1\tperiod_2\tscore\tterm\n\n");
p1=p2=(struct subject *)malloc(sizeof(struct subject));
fscanf(fp,"%ld%s%s%d%d%f%d",&p1->c_num,p1->c_name,p1->c_kind,&p1->c_period_1,&p1->c_period_2,&p1->c_score,&p1->c_term);
while(p1->c_num)
c+=1;
if(c==1) c_head=p1;
else p2->next=p1;
p2=p1;
p1=(struct subject *)malloc(sizeof(struct subject));
fscanf(fp,"%ld%s%s%d%d%f%d",&p1->c_num,p1->c_name,p1->c_kind,&p1->c_period_1,&p1->c_period_2,&p1->c_score,&p1->c_term);
p2->next=NULL;
return;
c=0; 这个C没定义吧
if(c==1) c_head=p1;
这行C_HEAD也没定义吧、追问
全局变量定义过的。没有报错和警告。fscanf 莫名其妙地跳过,很奇怪。
追答你最好修改它的输入方式。
C语言的结构体和C++结构体的区别
关于C++中声明结构体中需要使用构造器创建实例对象的语法:
接着上两个代码截图你就初步体会到C语言的结构体和C++结构体的区别了:
对于右边的C++结构体的使用类似Java,C++,Swift中的类,类中有构造器方法,然后构造器创建这个类的实例对象。
当然Swift中也有一样用法的结构体。毕竟Swfit是集大家之所成的现代语言。
以上是关于C语言问题:下面是结构体和一个子函数,单步执行到 fscanf 时,程序直接跳到了下一行,fscanf 不执行!求教的主要内容,如果未能解决你的问题,请参考以下文章