| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖
标题:一个关于写入文件的问题
只看楼主 加入收藏
安普留香
Rank: 2
等 级:论坛游民
帖 子:77
专家分:62
注 册:2010-5-17
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:5 
一个关于写入文件的问题
程序代码:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 800
int main()
{
    char* ch[MAX_LEN];
    memset(ch,0,MAX_LEN);
    FILE* pfile=fopen("FILE.c","r");//打开源文件
    if(NULL==pfile)
        printf("Open file failed\n");
    else
        printf("Open file success\n");
    FILE* cfile=fopen("test.txt","w+");//打开目标文件
    fseek(pfile,0,SEEK_END);
long flen=ftell(pfile);
rewind(pfile);
printf("This file %d bytes\n",flen);
    long read=fread(ch,1,flen,pfile);//读入内存
    printf("Have been read %d bytes\n",read);
    size_t write=fwrite(ch,1,flen,cfile);
   // printf("Have been writen %s bytes\n",write);
    fclose(pfile);
    fclose(cfile);
    return 0;

}
两个问题:
1、如果加入红色代码,程序会停止
2、去掉红色代码,程序运行正常。但是显示读入的字节数(462 bytes)少于源文件(FILE.c)的字节数(495 bytes).
但是查看test.txt发现实际上写入了527 bytes,并且后面一对空白字符。
搜索更多相关主题的帖子: 文件 
2010-11-23 22:50
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <string.h>

#define MAX_LEN 800

int main()
{
      char ch[MAX_LEN];
      FILE* pfile,*cfile;
      long flen,read;
      size_t write;

      memset(ch,'\0',MAX_LEN);
      pfile=fopen("FILE.c","r");/*打开源文件 */

      if(NULL==pfile)
            printf("Open file failed\n");
      else
            printf("Open file success\n");

      cfile=fopen("test.txt","w+");/*打开目标文件*/
      fseek(pfile,0,SEEK_END);
      flen=ftell(pfile);
      rewind(pfile);
      printf("This file %d bytes\n",flen);
      read=fread(ch,1,flen,pfile);/*读入内存 */
      printf("Have been read %d bytes\n",read);
      write=fwrite(ch,flen,1,cfile);
      printf("Have been writen %d bytes\n",write);
      fclose(pfile);
      fclose(cfile);
      getch();
      return 0;
}

2010-11-24 09:36
安普留香
Rank: 2
等 级:论坛游民
帖 子:77
专家分:62
注 册:2010-5-17
收藏
得分:0 
你的代码是正常运行,但是之写入1个字节
我还是没找到问题所在
2010-11-24 12:30
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

#define MAX_LEN 800

int main()
{
      char ch[MAX_LEN];
      FILE* pfile,*cfile;
      long flen,read;
      size_t write;

      memset(ch,'\0',MAX_LEN);
      pfile=fopen("FILE.c","r");/*打开源文件 */

      if(NULL==pfile)
            printf("Open file failed\n");
      else
            printf("Open file success\n");

      cfile=fopen("test.txt","w+");/*打开目标文件*/
      fseek(pfile,0,SEEK_END);
      flen=ftell(pfile);
      rewind(pfile);
      printf("This file %d bytes\n",flen);
      read=fread(ch,1,flen,pfile);/*读入内存 */
      printf("Have been read %d bytes\n",read);
      write=fwrite(ch,1,flen,cfile);
      printf("Have been writen %d bytes\n",write);
      fclose(pfile);
      fclose(cfile);
      getch();
      return 0;
}

2010-11-24 12:53
安普留香
Rank: 2
等 级:论坛游民
帖 子:77
专家分:62
注 册:2010-5-17
收藏
得分:0 
我实在看不出我们代码有什么区别
2010-11-24 18:19
安普留香
Rank: 2
等 级:论坛游民
帖 子:77
专家分:62
注 册:2010-5-17
收藏
得分:0 
靠~~
%d写成%s了
2010-11-24 18:40
快速回复:一个关于写入文件的问题
数据加载中...
 
   



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

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