东部甜甜圈龟成体:求C高手指点我的程序错误是哪里?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 10:23:08
学C一学期,老师出了个作业:老师要我们用C编写一个程序,读取D盘中的一个存放有学生成绩(只是成绩)的文本文件score1.txt,要求把成绩用整型数据存放在一个数组中,然后排序保存到score2.txt。下面是我的程序(自己确实乱想的 不会做,对文件的操作我们都没学过):
#include<stdio.h>
#define ARR_SIZE 20
void Paixu(int score[],int n);/*函数申明*/
int Duquint(FILE *fp,int result[],char readchar[]);
main()
{
int n,i,score[ARR_SIZE];
char result[ARR_SIZE];
FILE *fpt=fopen("D:\\score1.txt","rb");
FILE *fps=fopen("D:\\score2.txt","wb");
if(fpt==NULL)return;
n=Duquint(fpt,score,result);
Paixu(score,n);
for(i=0;i<n;i++)
{
fprintf(fps,"%d",score[i]);
fputc(' ',fps);
}
fclose(fpt);
fclose(fps);
}
int Duquint(FILE *fp,int result[],char readchar[])
{
int i,j;
for(i=0;;i++)
{
for(j=1;;j++)
{
readchar[j]=fgetc(fp);
if(readchar[j]==' ')
{
result[i]=readchar[j];
break;
}
else if(readchar[j]==EOF)break;
}
if(readchar[j]==EOF)break;
}
return(i);
}
void Paixu(int score[],int n)/*函数由大到小的顺序排列*/
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(score[j]>score[i])
{
temp=score[i];
score[i]=score[j];
score[j]=temp;
}/*if语句结束*/
}/*内层循环结束*/
}/*外层循环结束*/
}
运行只有 score2.txt中全是32 32 32 32 32 32 32

靠 楼上的 你要能20行写出来 我给你100分
最讨厌这种不懂装懂的

#include<iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void DAS(char *a,char *b)
{
int x[255],q=0,j,t;
unsigned char c;
FILE *fp1,*fp2;
fp1=fopen(a,"rb");
if(NULL==fp1)
{cout<<"不存在!";exit(0);}
fp2=fopen(b,"wb");
if(NULL==fp2)
{cout<<"创建错误!";exit(0);}
for(int i=0;i<255;i++)
x[i]=0;
while(1)
{
c=fgetc(fp1);
if(255==c)
break;
if((c>57||c<48)&&' '!=c)
{cout<<"文件格式有问题!"<<c;fclose(fp1);fclose(fp2);
exit(0);}
if(c<=57&&c>=48)
{x[q]=10*x[q]+c-48;}
else
{q++;}
}
for(i=0;i<=q;i++)
for(j=0;j<i;j++)
if(x[i]<x[j])
{t=x[i];x[i]=x[j];x[j]=t;}
for(i=0;i<=q;i++)
{
fprintf(fp2,"%d",x[i]);
if(i!=q)
fprintf(fp2," ");
}
fclose(fp1);
fclose(fp2);
}

void main()
{
char a[255];
char b[255];
gets(a);
gets(b);
DAS(a,b);
}
这是我写的 你的我还没看 现在帮你看
你的肯定是32嘛
int Duquint(FILE *fp,int result[],char readchar[])
{ .
.
.

if(readchar[j]==' ')
{
result[i]=readchar[j];
break;
}
.
.
.
}
这里result[i]=readchar[j]; 附值的时候就附的是" "的ASCII编码号 32 所以你的都是32

请参考
http://zhidao.baidu.com/question/8136737.html

明明很简单的一个问题,你看看你写的程序多长一串呀,最多20行就能搞定的,不就是读取一个数组,排个序吗?