读书人

(三级题)为什么屏幕显示输出的和写如文

发布时间: 2012-02-29 16:44:11 作者: rapoo

(三级题)为什么屏幕显示输出的和写如文件的不一样,帮忙看是哪里的问题?
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 10
void readwriteDAT();
typedef struct ss
{ char num[10]; int s; } STU;

mmm(STU a[], STU *s)
{
STU tempsco=a[0];
int i;
for(i=0;i <N;i++)
{
if(tempsco.s> a[i].s)
tempsco=a[i];
}
*s=tempsco;
return 0;

}

main ( )
{
STU a[N]={ { "A01 ",81},{ "A02 ",89},{ "A03 ",66},{ "A04 ",87},{ "A05 ",77},
{ "A06 ",90},{ "A07 ",79},{ "A08 ",61},{ "A09 ",80},{ "A10 ",71} }, m ;
int i;
printf( "***** The original data *****\n ");
for(i=0; i < N; i++)printf( "No = %s Mark = %d\n ", a[i].num,a[i].s);
mmm(a, &m);
printf( "***** THE RESULT *****\n ");
printf( "The lowest : %s , %d\n ",m.num, m.s);
readwriteDAT();
}

void readwriteDAT()
{
FILE *rf, *wf ;
STU a[N], m ;
int i ;

rf = fopen( "in.dat ", "r ") ;
wf = fopen( "out.dat ", "w ") ;
for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d ", a[i].num, &a[i].s) ;
mmm(a, &m) ;
fprintf (wf, "The lowest : %s, %d\n ", m.num, m.s) ;
fclose(rf) ;
fclose(wf) ;
}


只改动mmm函数
运行没有错误,屏幕显示
The lowest : A08 , 61

可是 文件out.dat中 为什么是
The lowest : P, -1




[解决办法]
in.dat是什么内容?
[解决办法]
你的 out 文件内容和你的屏幕内容,
在程序中没有什么关系嘛。

void readwriteDAT()
{
FILE *rf, *wf ;
STU a[N], m ;
int i ;

rf = fopen( "in.dat ", "r ") ;
wf = fopen( "out.dat ", "w ") ;
for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d ", a[i].num, &a[i].s) ;
mmm(a, &m) ;
fprintf (wf, "The lowest : %s, %d\n ", m.num, m.s) ;
fclose(rf) ;
fclose(wf) ;
}

输出文件是这个函数产生的,
和 mm 没关系~~~

看看你的in.dat文件中的内容~

读书人网 >C语言

热点推荐