快来帮帮忙~!~!~文件那章的问题 50分~!~!

Gpa 2002-08-19 09:47:23
#include <stdio.h>

#define SIZE 5

typedef struct student
{
int num;
char name[10];
float score;
float averge;
struct student *next;
}student;

void main()
{
FILE *fp;
student *h,*p;
int i;
if( (fp=fopen("stud.txt","w"))==NULL )
{
printf("Can't open the file");
exit(1);
}

h=p=(student *)malloc(sizeof(student));
for(i=0;i<SIZE;i++)
{
printf("please input num name score\n");
scanf("%d%s%3.2f",&p->num,p->name,&p->score);
p->averge=p->score/3;
p->next=(student *)malloc(sizeof(student));

}
p->next=NULL;

for(p=h,i=0;i<SIZE;p=p->next)
fwrite(p,sizeof(student),1,fp);/*这里为什么p是指针不行*/
fclose(fp);
}
这里输入时还有一个问题,只可以输两个之后不行了,不会是我的编译器问题吧?
...全文
58 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
boodweb 2002-08-20
  • 打赏
  • 举报
回复
fflush的作用就是清空缓冲区
stdin代表标准输入缓冲区
Gpa 2002-08-19
  • 打赏
  • 举报
回复
多谢你~!

我想问一下fflush(stdin)
是什么函数,多谢你帮我解答
earthharp 2002-08-19
  • 打赏
  • 举报
回复
for(p=h,i=0;i<SIZE;p=p->next)这个loop结束条件是什么?
!!!!!!!
boodweb 2002-08-19
  • 打赏
  • 举报
回复
见"//ADDED"语句
for(i=0;i<SIZE;i++)
{
printf("please input num name score\n");
fflush(stdin);//ADDED
scanf("%d%s%3.2f",&p->num,p->name,&p->score);
p->averge=p->score/3;
p->next=(student *)malloc(sizeof(student));

p=p->next;//ADDED
}
输入问题是缓冲区问题(老问题了),fscanf不会除去缓冲区内输入的回车,导致累计
dcyu 2002-08-19
  • 打赏
  • 举报
回复
以前我有碰到过类似情况也是这样解决的。
dcyu 2002-08-19
  • 打赏
  • 举报
回复
加了i++,后面的问题解决了,至于前面的我认为是scanf()语句本身的问题。
你可以这样:
int a;
char b[10];
float c;

...
for(i=0;i<SIZE;i++)
{
printf("please input num name score\n");

scanf("%d%s%3.2f",&a,b,&c);
p->num=a; p->score=c;
strcpy(p->name,b);


...
}
...

winstarr 2002-08-19
  • 打赏
  • 举报
回复
可能是定义指针错了,
我帮你编译一下看!
Gpa 2002-08-19
  • 打赏
  • 举报
回复
#include <stdio.h>

#define SIZE 5

typedef struct student
{
int num;
char name[10];
float score;
float averge;
struct student *next;
}student;

void main()
{
FILE *fp;
student *h,*p;
int i;
if( (fp=fopen("stud.txt","w"))==NULL )
{
printf("Can't open the file");
exit(1);
}

h=p=(student *)malloc(sizeof(student));
for(i=0;i<SIZE;i++)
{
printf("please input num name score\n");
scanf("%d%s%3.2f",&p->num,p->name,&p->score);
p->averge=p->score/3;
p->next=(student *)malloc(sizeof(student));

}
p->next=NULL;

for(p=h,i=0;i<SIZE;i++,p=p->next)
fwrite(p,sizeof(student),1,fp);/*这里为什么p是指针不行*/
fclose(fp);
}
Gpa 2002-08-19
  • 打赏
  • 举报
回复
i<5啊~!

大家帮忙试试编译行不行
ashchan 2002-08-19
  • 打赏
  • 举报
回复
for(p=h,i=0;i<SIZE;p=p->next)这个loop结束条件是什么?
allenwu 2002-08-19
  • 打赏
  • 举报
回复
可能是换行把
不清楚
关注!
Gpa 2002-08-19
  • 打赏
  • 举报
回复
输入的问题是结构数组也一样这样,不知道什么原因了
内容概要:本文围绕基于Boost MPPT与双PI闭环双向DC-DC的离网光伏储能系统展开,系统性地研究了其动力学建模与稳态特性析,并通过Simulink平台实现了完整的仿真验证。研究构建了涵盖光伏阵列、最大功率点跟踪(MPPT)控制、双向DC-DC变换器及储能电池的整体系统架构,采用Boost电路实现高效MPPT控制,并引入电压-电流双闭环PI控制策略,实现对储能系统精确的充放电管理。文章深入析了系统在光照强度与环境温度双重扰动下的动态响应与稳态性能,验证了所提出模型的准确性与控制策略在不同工况下的鲁棒性与有效性,为离网光伏储能系统的优化设计与工程应用提供了坚实的理论基础和仿真依据。; 适合人群:具备电力电子技术、新能源系统或自动控制理论等相关专业知识背景,从事光伏储能系统、微电网或可再生能源领域研究与仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握离网光伏储能系统的完整建模方法与关键参数设计流程;② 深入理解Boost电路MPPT控制与双向DC-DC变换器双PI闭环控制的协同工作机制与实现细节;③ 通过Simulink仿真析系统在光照突变、温度变化等动态扰动下的稳态特性、电压稳定性和能量管理性能;④ 为实际离网系统的控制器设计、参数整定及性能优化提供可靠的理论指导和仿真验证手段。; 阅读建议:建议结合提供的Simulink仿真模型同步学习,重点关注MPPT算法的实现逻辑、双PI控制器的参数整定方法以及系统在不同环境条件和负载变化下的响应特性,可在此基础上进一步探索多目标优化控制或智能控制策略的应用。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧