首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

(三级题)为什么屏幕显示输出的和写如文件的不一样,帮忙看是哪里的有关问题

2012-02-29 
(三级题)为什么屏幕显示输出的和写如文件的不一样,帮忙看是哪里的问题?#includestdio.h#includestring.

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

热点排行