标题:文本文件不能在VC++中正确执行吗?
只看楼主
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
结帖率:100%
已结贴  问题点数:15 回复次数:25 
文本文件不能在VC++中正确执行吗?
我在学习文件操作,下面这段代码是将一个文本文件的内容追加到另一个文本文件中去。
可以正确编译,可以运行。但得不到正确的运行结果文件,目标文件显示乱码,程序也无法显示。
请大家帮我看看,是什么问题?

程序代码:
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"

int main(void)
{
    char filetarget[40],fileappend[40];
    FILE * ft, * fa;
    char ch;

    printf("Enter the target file: ");
    gets(filetarget);
    if ((ft=fopen(filetarget,"a+"))==NULL)
    {
        printf("Can't open file \"%s\".",filetarget);
        exit(1);
    }

    printf("\nEnter the append file: ");
    while(gets(fileappend) && fileappend[0]!='\0')
    {
        if ((fa=fopen(fileappend,"r"))==NULL)
        {
            printf("Can't open file \"%s\".",fileappend);
            exit(1);
        }
        while((ch=getc(fa))!=EOF);
            putc(ch,ft);
        fclose(fa);
        printf("\nAppend next file(Empty line to quit): ");
    }

    puts("\nShow the target file: ");
    rewind(ft);   
    while((ch=getc(ft))!=EOF)
        putchar(ch);
    fclose(ft);
   
    //end
    while(getchar()!='\n');
    return 0;
}
搜索更多相关主题的帖子: 目标 文本文件 
2011-12-26 16:16
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:0 
文件名称呢

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-12-26 16:24
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
得分:0 
我又测试了一下,手动输入也不能进到文件里面去。如以下代码无效:
    if ((ft=fopen(filetarget,"a"))==NULL)
    {
        printf("Can't open file \"%s\".",filetarget);
        exit(1);
    }
    while((ch=getchar())!=EOF)
        putc(ch,ft);

但是我并上述几行代码放到一个函数中区,将函数名字符串作为参数,有效。
觉得很奇怪
2011-12-26 16:31
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
得分:0 
以下是引用vandychan在2011-12-26 16:24:54的发言:

文件名称呢
文件名称是通过gets函数输入的,这样不允许吗???
2011-12-26 16:32
edward_eric
Rank: 2
等 级:论坛游民
帖 子:32
专家分:83
注 册:2011-10-5
得分:0 
咳,你也知道是在用文件,怎么用getc和putc呢?还有,文件打开模式哪有a 的?
2011-12-26 16:50
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
得分:0 
以下是引用edward_eric在2011-12-26 16:50:22的发言:

咳,你也知道是在用文件,怎么用getc和putc呢?还有,文件打开模式哪有a 的?
文件单字符的输入输出不是用getc/putc的吗?如果是标准输入输出我记得是getchar/putchar
文件打开模式不是r(只读),w(覆写),a(追加)三种吗?
我看的书上是这样写的《C primer plus》,而且我前面写了几个程序都是有效的,放在函数中去实现也是有效的。

更奇怪的是:
键盘录入文件,现在有效了,我对比了一下代码,没有出入。
但我隐约觉得好像和文件本身有关。我是xp系统,vs2008
2011-12-26 17:10
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
得分:0 
怎么没有人解答?

[ 本帖最后由 yeliming 于 2011-12-26 17:19 编辑 ]
2011-12-26 17:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
一塌糊涂,都不知道从何处开始纠正你才好。与VC什么的无关,不要总是猜这个,病急乱投医。

授人以渔,不授人以鱼。
2011-12-26 17:17
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
得分:0 
Tony你好,

我记得你上次帮了我一个忙,这次能说的详细点吗?
2011-12-26 17:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:10 
1.先检查好你那些while后面的分号。
2.目标文件ft用"a+"打开只能永远在末尾追加,无法rewind()掉头。
3.所有getc()类函数都是返回int,不要定义ch为char。

授人以渔,不授人以鱼。
2011-12-26 17:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-358659-1-1.html




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

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