(三级题)为什么屏幕显示输出的和写如文件的不一样,帮忙看是哪里的问题?
#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文件中的内容~