| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 708 人关注过本帖
标题:[复制不正确]刚学文件
只看楼主 加入收藏
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
 问题点数:0 回复次数:8 
[复制不正确]刚学文件
把file1的内容复制到file2文件里,但是file2的后尾多了一个ascii码为152的字符??

file1.txt:i love u jat.
file2.txt:i love u jat.(句号后面多了一个值为152的字符)

该如何解决?

#include<stdio.h>
main()
{
    FILE*in,*out;
    char ch,infile[10],outfile[10];
    printf("input infile name:\n");
    scanf("%s",infile);
    printf("input outfile name:\n");
    scanf("%s",outfile);
    if((in=fopen(infile,"r"))==NULL)
    {
        printf("cannot open infile\n");
        exit(0);
    }
    if((out=fopen(outfile,"w"))==NULL)
    {
        printf("cannot open outfile\n");
        exit(0);
    }
    while(!feof(in))
        fputc(fgetc(in),out);
    fclose(in);
    fclose(out);
    getch();
}
搜索更多相关主题的帖子: 文件 
2005-08-31 03:06
ljked1
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-8-31
收藏
得分:0 
可能是你的
if((in=fopen(infile,"r"))==NULL)有问题
tc里最好用绝对路径,相对路径很容易出错
你把infile改成"D:\**.txt".看 看

2005-09-01 19:35
jjkl832
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-9-1
收藏
得分:0 
我不太清楚哦

2005-09-01 20:06
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用84009030在2005-8-31 3:06:52的发言: 把file1的内容复制到file2文件里,但是file2的后尾多了一个ascii码为152的字符?? file1.txt:i love u jat. file2.txt:i love u jat.(句号后面多了一个值为152的字符) 该如何解决? #include<stdio.h> main() { FILE*in,*out; char ch,infile[10],outfile[10]; printf("input infile name:\n"); scanf("%s",infile); printf("input outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("cannot open infile\n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("cannot open outfile\n"); exit(0); } while(!feof(in)) fputc(fgetc(in),out); fclose(in); fclose(out); getch(); }

多写的那个字节其实是-1,当fgetc()在文件末无法取得字节时函数返回-1,这样就将-1写入文件了,我是这样理解的,不知道正确与否,虽然做了试验可以证明这一点,不过我不知道这么说多不多,请知道原因的朋友不吝赐教。这个问题我很久以前就注意了,因为没什么大碍,今天看见你的帖子让我重新考虑了一下。下面贴上我的实验代码: #include <stdio.h>

int main(int argc,char *argv[]) { if(argc < 3) { printf("Usage: Mycopy [Source] [Destinaion]\n"); return 0; } else { FILE *fin,*fout; fin=fopen(argv[1],"rb"); if(!fin) { printf("No such file named as %s exist!\n",argv[1]); return 0; } fout=fopen(argv[2],"wb"); int rbyte; while(1) { if((rbyte=fgetc(fin)) != EOF) fputc(rbyte,fout); else break; } printf("Copy complete!\n"); fclose(fin); fclose(fout); return 0; } }


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-09-01 20:11
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 
楼上的方法我试过也是不行

/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-09-01 21:37
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 
2楼的朋友

只写文件名系统不是自动搜索当前位置的文件吗?

/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-09-01 21:46
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 
我想那嗰字符不是EOF吧`

在ASCII码找得到`

/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-09-01 21:54
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用84009030在2005-9-1 21:37:48的发言: 楼上的方法我试过也是不行
但不知为什么,我这里测试正确。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-09-01 22:03
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 
还是不行`可能是机子的问题`

/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-09-02 04:55
快速回复:[复制不正确]刚学文件
数据加载中...
 
   



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

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