CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

文件的有关操作,请各位指教!

楼主hurrah_yule(子曰:学而时习之)2002-06-20 19:57:01 在 C/C++ / C语言 提问

想从一个文件考数据到另一个文件:  
  源文件t.txt中是字符:a—z。  
          程序在屏幕输出的是一堆不认识的字符(应该是ASCII字符吧),文件tw.txt中得到的全部是字符'z'。这是怎么回事?  
          另外,我想从别的目录下的文件中拷贝数据到别的目录中的文件,应该怎么做?比方说:我的tc2.0装在c:\tc下,现在我只会从c:\tc\bin目录下操作文件,但是我想从别的路径操作就不会了,请各位指教!谢谢!  
   
  #include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <conio.h>  
   
  void   main()  
  {  
  FILE   *fp1,*fp2;  
  char   buf[26];  
  int   i;  
  if((fp1=fopen("t.txt","rb"))==NULL)  
  {  
  printf("open   t   error!");  
  getch();  
  exit(0);  
  }  
  for(i=0;i<26;i++)  
  {  
  putchar(buf[i]);  
  }  
  for(i=0;i<26;i++)  
  {  
  if(fread(&buf,sizeof(char),1,fp1)!=1)  
  {  
  printf("read   error!");  
  getch();  
  exit(0);  
  }  
  }  
  if((fp2=fopen("tw.txt","wb"))==NULL)  
  {  
  printf("open   tw   error!");  
  getch();  
  exit(0);  
  }  
  rewind(fp1);  
  for(i=0;i<26;i++)  
  {  
  if(fwrite(buf,sizeof(char),1,fp2)!=1)  
  {  
  printf("write   error!");  
  getch();  
  exit(0);  
  }  
  }  
  fclose(fp2);  
  fclose(fp2);  
  getch();  
  } 问题点数:50、回复次数:12Top

1 楼jieshen(吃"食"大仙)回复于 2002-06-20 21:38:47 得分 0

gzTop

2 楼oujinliang(大漠孤烟)回复于 2002-06-20 21:43:47 得分 15

for(i=0;i<26;i++)  
  {  
  putchar(buf[i]);//buf[i]没有初始化,当然输出乱码  }  
  Top

3 楼SeainBlue(爱海)回复于 2002-06-20 21:44:36 得分 15

最后一个循环:  
  for(i=0;i<26;i++)  
  {  
  if(fwrite(buf+i,sizeof(char),1,fp2)!=1)  
                                      //if(fwrite(buf,sizeof(char),1,fp2)!=1)  
  {  
  printf("write   error!");  
  getch();  
  exit(0);  
  }  
  }  
  Top

4 楼SeainBlue(爱海)回复于 2002-06-20 21:46:44 得分 0

另外:你的并没有读入t.txt文件的内容到buf数组中,自然会出现乱码Top

5 楼SeainBlue(爱海)回复于 2002-06-20 21:48:19 得分 0

倒数第三行  
  fclose(fp1);   // fclose(fp2);  
   
  Top

6 楼oujinliang(大漠孤烟)回复于 2002-06-20 21:52:23 得分 0

if(fread(&buf,sizeof(char),1,fp1)!=1)//你将所有的字符都读到buf[0]中了;于是后面的将前面的覆盖了。  
  {  
  printf("read   error!");  
  getch();  
  exit(0);  
  }  
  其实你不需要for循环,只要  
  fread(&buf,sizeof(char),26,fp1);即可。  
   
  至于其它目录的文件,只要把路径名一起加入就可。Top

7 楼SeainBlue(爱海)回复于 2002-06-20 21:52:43 得分 0

for(i=0;i<26;i++)  
  {  
  if(fread(buf+i,sizeof(char),1,fp1)!=1)  
  //if(fread(buf,sizeof(char),1,fp1)!=1)  
  {  
  printf("read   error!");  
  getch();  
  exit(0);  
  }  
  }  
  Top

8 楼wengzuliang(Jeff)回复于 2002-06-20 21:53:46 得分 5

若你文件位置在"d;\output\file1.txt"  
  则,fopen("d:\\output\\file1.txt","r")  
  注意是两个‘\’Top

9 楼Montaque(每天回答两个问题)回复于 2002-06-20 21:53:46 得分 5

putchar(buf[i]);//buf[i]没有初始Top

10 楼oujinliang(大漠孤烟)回复于 2002-06-20 21:55:51 得分 0

错了。是buf不是&buf.前面几位分析也是的。Top

11 楼jackeyjia(毛毛虫)回复于 2002-06-21 09:33:24 得分 10

一下程序可以通过:  
  #include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <conio.h>  
  #include   <string.h>  
   
  //#define           SFILE               "t.txt"  
  #define     SFILE       "e:\\c\\test\\Debug\\t.txt"     /*从别的路径取文件*/  
  #define     BUFSIZE   26  
   
  void   main()  
  {  
  FILE   *fp1,*fp2;  
  char   buf[BUFSIZE];  
   
                    memset(buf,   '\0',   BUFSIZE);  
   
  if((fp1=fopen(SFILE,"rb"))==NULL)  
  {  
  printf("open   t   error!");  
  getch();  
  exit(0);  
  }  
  if(fread(buf,sizeof(char),BUFSIZE,fp1)   ==   0)  
  {  
  printf("read   error!\n");  
  getch();  
  exit(0);  
  }  
  if((fp2=fopen("tw.txt","wb"))==NULL)  
  {  
  printf("open   tw   error!");  
  getch();  
  exit(0);  
  }  
  if(fwrite(buf,   sizeof(char),   sizeof(buf),   fp2)   ==   0)  
  {  
                    printf("write   error!");  
  getch();  
  exit(0);  
  }  
  fclose(fp1);  
  fclose(fp2);  
  getch();  
  }  
  Top

12 楼hurrah_yule(子曰:学而时习之)回复于 2002-06-22 14:07:55 得分 0

暂时明白了!谢谢各位!结帖!Top

相关问题

  • 有关ASP对文件的操作!!!各位高手请进!!!
  • 有关文件操作!
  • 有关文件操作
  • 有关文件操作
  • 有关INI文件操作的问题!
  • 有关文件操作的问题
  • 请教高手有关文件操作
  • 有关文件操作的问题
  • 有关内存映射文件操作
  • 有关struts对.properties文件的操作

关键词

  • 文件
  • 字符
  • null
  • fp
  • getch
  • bufsize
  • sfile
  • buf
  • 目录
  • fopen

得分解答快速导航

  • 帖主:hurrah_yule
  • oujinliang
  • SeainBlue
  • wengzuliang
  • Montaque
  • jackeyjia

相关链接

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

广告也精彩

反馈

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