| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1608 人关注过本帖
标题:为什么不能合并文件?
取消只看楼主 加入收藏
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
结帖率:76.92%
收藏
已结贴  问题点数:5 回复次数:5 
为什么不能合并文件?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 50

char *input_sData(char *ps,int n);
void output_sData(char *ps,int n);
void WriteFile(char *ps,char *sName,int n);
void catFile(char *srcName,char *dstName);


int main(int argc,char *argv[])
{
 char buffer[SIZE];
 int  len;

 input_sData(buffer,SIZE);
 len = strlen(buffer);
 WriteFile(buffer,"mike.dat",len);
 input_sData(buffer,SIZE);
 len = strlen(buffer);
 WriteFile(buffer,"mike1.dat",len);
 catFile("mike.dat","mike1.dat");

 return 0;
}
/*
** 输入数据
*/
char *input_sData(char *ps,int n)
{
 int  i;
 int  ch;
 
 i = 0;
 while((i < n - 1) && (ch = getchar()) != EOF && ch != '\n')
  ps[i++] = ch;

 ps[i] = '\0';

 return ps;

}

/*
** 写文件
*/
void WriteFile(char *ps,char *sName,int n)
{
 FILE *fp = NULL;

 if((fp = fopen(sName,"w")) == NULL)
 {
  printf("Can't open file %s\n",sName);
  exit(1);

 }
 else
 {
  fwrite(ps,sizeof(char),n,fp);
  fclose(fp);
 }

}
/*
** 合并文件
*/
void catFile(char *srcName,char *dstName)
{
 FILE *fps = NULL;
 FILE *fpd = NULL;
 int  ch;

 if((fps = fopen(srcName,"r")) == NULL)
 {
  printf("Can't open file %s\n",srcName);
  exit(1);

 }
 else
 {
  fseek(fps,1,SEEK_END);
 }
 if((fpd = fopen(dstName,"r")) == NULL)
 {
  printf("Can't open file %s\n",dstName);
  exit(1);
 }

 while( (ch = fgetc(fpd)) != EOF)
   fputc(ch,fps);

 fclose(fps);
 fclose(fpd);


}



文件不能合并。

例: mike.dat  内容:123

    mike1.dat 内容: abc



catFile("mike.dat","mike1.dat") 之后,文件不能合并?



怎么回事呢?
搜索更多相关主题的帖子: 文件 
2009-12-31 13:44
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
恩,谢谢楼上的。

怎么移动文件指针呢?

fseek(fps,1,SEEK_END);

打开fps这个文件,想让文件指针指到末尾
2009-12-31 14:27
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
以下是引用zhangxf1989在2009-12-31 14:38:45的发言:

用fseek(fps,0,2);
0代表什么?
2代表什么?
2009-12-31 14:42
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
if((fps = fopen(srcName,"r")) == NULL)    // 改成 "a+"才可以在文件尾追加。如果改成 "w",成追加不了。
{
  printf("Can't open file %s\n",srcName);
  exit(1);

}
else
{
  fseek(fps,0,SEEK_END);  //移动文件指针到末尾,不起作用??
}

怎么移动文件指针到文件尾?
2009-12-31 14:45
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
如果不用"a+",打开文件,怎么移动到文件尾
2009-12-31 16:39
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
谢谢。
但是
void catFile(char *srcName,char *dstName)
{
    FILE    *fps = NULL;
    FILE    *fpd = NULL;
    int        ch;

    if((fps = fopen(srcName,"w")) == NULL)
    {
        printf("Can't open file %s\n",srcName);
        exit(1);

    }
    else
    {
        fseek(fps,0L,2);   //移到了最末尾还是不行啊?
    }
    if((fpd = fopen(dstName,"r")) == NULL)
    {
        printf("Can't open file %s\n",dstName);
        exit(1);
    }

    while( (ch = fgetc(fpd)) != EOF)
            fputc(ch,fps);

    fclose(fps);
    fclose(fpd);


}

     fseek(fps,0L,2);   //移到了最末尾还是不行啊?  是哪里出错呢?
2009-12-31 19:08
快速回复:为什么不能合并文件?
数据加载中...
 
   



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

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