CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

一个文件的问题???需要大家帮我!!!

楼主wanghongzhou720(雪缘)2004-12-03 11:46:51 在 C/C++ / C++ 语言 提问

我写了一个小题,是实现把输入的人名写入一个文本,然后从中找到一个输入人的名.  
  当找到时可以处理,但是当没有找到时就不知道怎么处理了,不知道怎么判断文件结束,即:何时文件指针移到文件结束,查找结束.我的题市是这样写的:  
            void   seek(   char*   const     p){  
  FILE*   fp;  
  if((fp=fopen("d:\\vc++\\whz.txt","r+t"))){  
                            fseek(fp,4,0);  
          char   returnchar[20];  
          char   constchar[20];  
          while(1){  
                strcpy(returnchar,fgets(constchar,20,fp));  
                *(returnchar+(strlen(returnchar)-1))='\0';  
  if(!strcmp(p,returnchar)){  
  cout<<returnchar<<endl<<p<<endl;  
  cout<<"找到要找的人!!!\n";  
  fclose(fp);  
  return;  
  }  
  fseek(fp,16,1);  
  if(feof(fp)){                                         //就是着这里不知道怎么处理了  
  fclose(fp);                           //当文件指针移过结尾时也没有办法知道  
                                                                                                        //是我的写错了吗????      
  cout<<"没有找到要找的人!!!\n";  
  }  
  }  
  }  
  else{  
  cout<<"没有成功打开文件!!!\n";  
  }  
           
  } 问题点数:0、回复次数:5Top

1 楼pomelowu(羽战士)回复于 2004-12-03 12:34:17 得分 0

        while(1){  
                strcpy(returnchar,fgets(constchar,20,fp));  
                *(returnchar+(strlen(returnchar)-1))='\0';  
  if(!strcmp(p,returnchar)){  
  cout<<returnchar<<endl<<p<<endl;  
  cout<<"找到要找的人!!!\n";  
  fclose(fp);  
  return;  
  }  
  fseek(fp,16,1);  
  if(feof(fp)){  
  fclose(fp);  
  cout<<"没有找到要找的人!!!\n";  
                                                        break;  
  }  
  Top

2 楼koalapheonix()回复于 2004-12-05 10:56:20 得分 0

没什么办法  
  一行一行读进char*中  
  然后按照你定义的格式来依次得到需要的数据  
   
  读文件的方法很多种   这个还算好用  
  /*  
  ifstream()       构造一个对象  
  ifstream(   const   char*,   int,   int   )       指定打开文件的对象  
  ifstream(   filedesc   )        
  ifstream(   filedesc,   char*,   int   )        
  */  
   
  /*  
  获取行输入的方法:  
  ifstream::get   or   ifstream::getline()每次取一行或者取你指定的终止符号的内容(第三个默认参数'10'也就是'\n')   -----   如果你要到\0结束则设置这个参数为'\0'一次读到终止符为止下次继续  
  get()     遇到终止符即停止,如果用流读文件一行保存一行覆盖一行  
  getline   取得终止符   但不保存到缓冲中  
   
  get():  
  ifstream   iPut("MM.ini");  
  ofstream   Out("WW.ini");  
   
  while(   iPut.get(   Buf,   100   )   )  
  {  
  iPut.get(   );  
  cout<<i++<<":"<<Buf<<endl;   //结束清空缓存  
  }  
   
  getline():  
                  ifstream   iiPut("MM.ini");      
  while(iiPut.getline(   Buf,   100   ))     //是不会讲\n插入到缓冲中只会加'0'作为结束  
  {  
  char*   cp   =   Buf;      
  while(   *cp   !=   0   )  
  cp++;  
  cp++;  
  cout<<cp<<endl;                             //遇到结束标志0也终止输出  
   
  Top

3 楼koalapheonix()回复于 2004-12-05 10:56:40 得分 0

#include   <iostream>  
  #include   <string>  
  #include   <fstream>  
  using   namespace   std;  
   
  struct  
  {  
  char   name[20];  
  int   mark;  
  long   No;  
  }student[100];  
   
  int   main()  
  {  
  ifstream   inf("fileName",   ios_base::in);  
  if   (inf.fail())  
  {  
  exit(-1);  
  }  
   
  int   i   =   0;  
  while   (!inf.eof())  
  {  
  string   str;  
  inf   >>   str;  
   
  char   *pName   =   student[i].name;  
  char   *pStr     =   const_cast<char*>(str.c_str());  
  while   ((*pName++   =   *pStr++)   !=   '\0');  
   
  inf   >>   student[i].mark   >>   student[i].No;  
  ++i;  
  }  
   
  return   0;  
  }  
  Top

4 楼koalapheonix()回复于 2004-12-05 10:57:07 得分 0

不知道上面两个能不能帮你的了Top

5 楼danlansky(忧郁蓝色)回复于 2004-12-05 13:49:17 得分 0

为什么要移位置指针呢,一行一行读应该没有问题呀?  
  楼主代码中有两处移位置指针了:  
  fseek(fp,4,0);   -----文件首4个字节处  
  fseek(fp,16,1);-----当前位置后16个字节处???Top

相关问题

  • 需要生成如下XML文件,请帮我写写 :)
  • 需要ICON文件
  • 我一个好友现在需要将AUTOCAD 中的DXF文件转化为PLT文件的相关的资料,大家帮忙a。
  • 我想问一下,只安装vb.net和C#需要多大的空间,帮助文件占多大。
  • @@@=== 合并帮助文件,需要朋友支援 ===@@@
  • LINUX中读文件目录的问题,需要你的帮助?
  • 大虾帮我,.rar文件是何文件?如何打开?
  • 哪里可找到我需要的DLL文件?
  • 需要excel97/2000文件格式
  • 大家帮帮我--关于avi文件

关键词

  • 文件
  • 指针
  • returnchar
  • fp
  • fseek
  • inf
  • student
  • 找到
  • 结束
  • 位置

得分解答快速导航

  • 帖主:wanghongzhou720

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo