求助!!c语言编程!急急急!大神帮帮忙!

文件7-2.dat中有15个整型数,编写函数myread()、sort()、mywrite()、main(),其中:myread()函数用于从文件7-2.dat中读出数据... 文件7-2.dat中有15个整型数,编写函数myread()、sort()、mywrite()、main(),其中:myread()函数用于从文件7-2.dat中读出数据,sort()函数将15个数由小到大排序, mywrite()函数将排序后的数据输出到屏幕和文件7-2.0ut中,main0函数中只有变量的定义、函数的声明和函数的调用。
文件7-2.dat中的数据如下:
35  87  234  67  90  123  450  12  58  48  25  74  324  500  610
思考:如果事先不知道文件7-2.dat中的数据个数,要通过读数据来统计数据的个数,再根据统计的数据个数分配内存单元,应该如何修改程序?
展开
 我来答
White_MouseYBZ
2019-07-10 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6492万
展开全部

以下代码是按“不知道文件中有多少个整数”的要求写的。

#include "stdio.h"

#include <stdlib.h>

int main(int argc,char *argv[]){

int n,*p;

int *myread(int *);

void sort(int *,int);

void mywrite(int *,int);

p=myread(&n);

sort(p,n);

mywrite(p,n);

free(p);//释放所申请的空间

return 0;

}

int *myread(int *n){

FILE *fp;

int t,*p;

if((fp=fopen("7-2.dat","r"))==NULL){

printf("Failed to open the file and exit...\n");

exit(0);

}

for(*n=0;fscanf(fp,"%d",&t)==1;(*n)++);//求文件有多少个整数

if((p=(int *)malloc(*n*sizeof(int)))==NULL){//动态申请内存

printf("Application memory failure...\n");

exit(0);

}

rewind(fp);//文件指针回到文件开头

for(t=0;fscanf(fp,"%d",p+t)==1;t++);//将文件数据读到动态数组p

fclose(fp);

return p;

}

void sort(int *p,int n){

int i,j,k;

for(i=0;i<n;i++){

for(k=i,j=k+1;j<n;j++)

if(p[k]>p[j])

k=j;

if(k!=i)

j=p[i],p[i]=p[k],p[k]=j;

printf("%d ",p[i]);//排序后的数据显示到屏幕,调试完毕删除此行

}

}

void mywrite(int *p,int n){

FILE *fp;

int m;

if((fp=fopen("7-2.out","w"))==NULL){

printf("Failed to create the file and exit...\n");

exit(0);

}

for(m=0;m<n;fprintf(fp,"%d ",p[m++]));

fclose(fp);

}

代码格式和运行结果图片:

AAA软件教育
2019-07-10 · IT职业教育领导品牌
AAA软件教育
AAA软件教育隶属于河南梦工厂教育信息咨询有限公司,从事高端计算机职业教育工作,是国内知名的教育品牌。自07年创建以来,依托先进的办学理念,AAA培养出了数万名专业型、实战型高端技术人才。
向TA提问
展开全部
C是编程语言里比较难学的一门,如果有心从事编程方向的工作,最好到专业机构多实践,更贴近市场,这样更有利于将来的发展。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式