我是靠谱客的博主 体贴酒窝,最近开发中收集的这篇文章主要介绍c语言把成绩写文件,c语言从键盘输入15个学生的情况,将其写入文件student.txt中。然后从文件中读出数据,求出成绩的最大值...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最佳答案

你的问题是什么呢?

程序语法上没有问题,但逻辑上肯定有问题的

你的输入就不对

对5个学生,循环只用了两次 for(i=0;i<2;i++),而用gets来得到name,sex也是不合理的(它必须输入回车)

追问:

#include#includestruct student0{char name[20];char sex[7];int age; float score;}stu[15],*q=stu;void *memset(void *s, int ch, size_t n); void main(){ FILE *p; fopen("student.txt","w+"); int i=0; if((p=fopen("student.txt","w+"))==NULL) { printf("error!"); exit(1); } for(i=0;i<2;i++) { scanf("%s%s%d%f",(q+i)->name,(q+i)->sex,&(q+i)->age,&(q+i)->score); } for(i=0;i<2;i++) { fprintf(p," %st%st%dt%fn",(q+i)->name,(q+i)->sex,(q+i)->age,(q+i)->score); } for(i=0;i<2;i++) { fscanf(p,"%f","*(q+i)->score"); } float max=q->score; for(i=0;i<2;i++) { if((q+i)->score>max) max=(q+i)->score; } printf("最高成绩是:%f",max); fclose(p);}改成这样但是student.txt文件中结尾有一个“屯”

追答:

还是错的啊你要求是输入15个学生的数据,但你只循环了2次且跟我刚回过的一个贴犯有同样的错文件读写有指针的,你写文件时,文件指针在文件尾部的,不能直接用fscanf来读的(且也读不到内容),你要用fseek(p,0L,0)来将文件指针移动头部的另外,你的fscanf(p, "%f", "*(q+i)->score");算是什么语句?fscanf后面的不能是常量的(你的程序能运行是运气)你也是必须一条条,一段段从文件读入的也就是要用 fscanf(p,"%s%s%d%f", (q + i)->name, (q + i)->sex, &(q + i)->age, &(q + i)->score);

追问:

懂了,非常感谢。

最佳答案由网友  whoami1978  提供

最后

以上就是体贴酒窝为你收集整理的c语言把成绩写文件,c语言从键盘输入15个学生的情况,将其写入文件student.txt中。然后从文件中读出数据,求出成绩的最大值...的全部内容,希望文章能够帮你解决c语言把成绩写文件,c语言从键盘输入15个学生的情况,将其写入文件student.txt中。然后从文件中读出数据,求出成绩的最大值...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部