标题:哪位大侠帮忙给解释一下(文件读取问题)
只看楼主
hzc_13
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2012-1-31
结帖率:71.43%
已结贴  问题点数:20 回复次数:5 
哪位大侠帮忙给解释一下(文件读取问题)
创建文件代码:
void main()
{
   int account;
   char name[ 30 ];
   double balance;
   
   FILE *cfPtr;
   
   if( ( cfPtr = fopen( "clients.dat", "w" ) ) == NULL ){
      printf( "File could not be opened\n" );   
   }
   else{
      printf( "Enter account, name and balance\n" );
      printf( "Enter EOF to end\n" );
      printf( "? " );
      scanf( "%d%s%lf", &account, name, &balance );   
   }
   
   while( !feof( stdin ) ){
      fprintf( cfPtr, "%d %s %.2f", account, name, balance );
      printf( "? " );
      scanf( "%d%s%lf", &account, name, &balance );   
   }
   
   fclose( cfPtr );
}

读文件代码:
#include "stdio.h"

void main()
{
   int account;
   char name[ 30 ];
   double balance;
   
   FILE *cfPtr;
   
   if( ( cfPtr = fopen( "clients.dat", "r" ) ) == NULL ){
      printf( "File could not be opened\n" );   
   }
   else{
      printf( "%-10s%-13s%s\n", "Account", "Name", "Balance" );
      fscanf( cfPtr, "%d%s%lf", &account, name, &balance );   
   }
   
   while( !feof( cfPtr ) ){
      printf( "%-10d%-13s%7.2f\n", account, name, balance );
      fscanf( cfPtr, "%d%s%lf", &account, name, &balance );   
   }
   
   fclose( cfPtr );
}
但是运行的时候为什么不停地读出文件中的第一条信息,后面的为什么没有,本人是初学者,还请各位前辈不吝赐教!!不胜感激!!!
搜索更多相关主题的帖子: void account balance double opened 
2012-02-11 13:08
hzc_13
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2012-1-31
得分:0 
看来这里没有高手呀,还是问题太简单了
2012-02-11 20:48
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
得分:20 
我猜可能是因为写入的时候,balance和后面的account没有空格隔开,所以读取的时候就乱套了

酱油实习生
2012-02-11 20:59
hzc_13
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2012-1-31
得分:0 
明白了,少了一个换行
fprintf( cfPtr, "%d %s %.2f\n", account, name, balance );
兄弟一语惊醒梦中人,多谢了

2012-02-11 23:16
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
得分:0 
回复 4楼 hzc_13
加油!

酱油实习生
2012-02-12 08:50
yxiangyxiang
Rank: 3Rank: 3
来 自:/\/\/\/\/
等 级:论坛游侠
帖 子:130
专家分:186
注 册:2012-1-29
得分:0 
#include <stdio.h>
int main()
{
    FILE    *fp;

    if( (fp=fopen("client.dat", "r"))==NULL )
    {
        printf(" Error1\n");
        exit( 0 );
    }
    whiel( !feof(fp) )
        printf("%c", fgetc(fp));
   
    fclose( fp );
    return 0;
}
2012-02-12 20:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-360733-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.190904 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved