| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1964 人关注过本帖
标题:抄书写的代码,没照出错误
只看楼主 加入收藏
zky434404896
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-27
结帖率:66.67%
收藏
已结贴  问题点数:16 回复次数:4 
抄书写的代码,没照出错误
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define bufsize 1024
#define slen 81
void append(FILE* source,FILE* dest);
int main()
{
    FILE*fa,*fs;
    int files=0;
    char fileapp[slen];
    char filesrc[slen];
    puts("输入目标文件");
    gets(fileapp);
    if ((fa=fopen(fileapp, "a"))==NULL)
    {
        puts("错误");
        exit(2);
    }
    if (setvbuf(fa, NULL, _IOFBF, bufsize))
    {
        fputs("不能创造一个缓冲区\n", stderr);
        exit(3);
    }
    puts("输入来源文件名字\n");
    while (gets(filesrc)&&filesrc[0]!='\0')
    {
        if (strcmp(filesrc, fileapp)==0)
        {
            fputs("不能自己弄自己", stderr);
        }
        else if (  (fs= fopen(filesrc, "r"))==NULL )
        {
            fprintf(stderr, "大不开文件啊啊啊啊啊");
        }
        else
        {
            if (setvbuf(fs, NULL, _IOFBF, bufsize)!=0)
            {
                fputs("打不开输入的缓冲区", stderr);
                continue;
            }
            append(fs, fa);
            if (ferror(fs)!=0)
            {
                fprintf(stderr, "reading file %s is wrong !\n",filesrc);
            }
            if (ferror(fa)!=0)
            {
                fprintf(stderr, "writing files %s is wrong !\n",fileapp);
            }
            fclose(fs);
            files++;
            printf("文件%s appended.\n",filesrc);
            puts("下一个文件");
        }
    }
    printf("over %d files appended",files);
    fclose(fa);
    return 0;
}
void append(FILE* source,FILE* dest)
{
    size_t bytes;
    static char temp[bufsize];
    while ((bytes=fread(temp, sizeof(char), bufsize, source))>0)
    {
        fwrite(temp, sizeof(char), bytes, dest);
    }
}
语法应该没问题,但是不知道为什么,程序没作用。。。我输入两个文件,但是两文件都没变化。
搜索更多相关主题的帖子: include source files 缓冲区 
2016-05-10 22:12
xiaomaoshi
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:28
注 册:2016-5-10
收藏
得分:0 
书上的include后面都是引号吗
2016-05-10 22:16
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:16 
输入两个文件执行后,你要想办法跳出while循环执行fclose(fa);才行。可以输一个不存在的文件名。
2016-05-11 08:59
zky434404896
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-27
收藏
得分:0 
回复 3楼 grmmylbs
可以,我懂了,谢啦
2016-05-11 09:07
zky434404896
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-27
收藏
得分:0 
回复 2楼 xiaomaoshi
这个。。。好像没区别吧。我改成<>也一样的
2016-05-11 09:07
快速回复:抄书写的代码,没照出错误
数据加载中...
 
   



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

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