| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2136 人关注过本帖
标题:谁帮我看看这段,分割和合并二进制文件哪里出错了
只看楼主 加入收藏
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
结帖率:63.64%
收藏
已结贴  问题点数:10 回复次数:10 
谁帮我看看这段,分割和合并二进制文件哪里出错了
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <string.h>
#include <malloc.h>
#include <memory.h>

char path[1024] = "C:\\Users\\Administrator\\Desktop\\X.PNG";
char **ppf = NULL;
int open_source_file()//打开源文件
{
    FILE *pf = fopen(path, "rb");
    if (pf == NULL)
    {
        puts("文件打开失败\n");
        return -1;
    }
    else
    {
        fseek(pf, 0, SEEK_END);
        int size = ftell(pf);
        fclose(pf);
        return size;
    }
   
}


void subsectionjia(int sum)//分段加密
{
    FILE *pfr = NULL;
    FILE *pfw = NULL;

    if ((pfr = fopen(path, "rb")) == NULL)
    {
        printf("文件打开失败\n");
        return;
    }
    long long length = open_source_file();//获取源文件总字

    if(length%sum == 0)
    {
        for (int i = 0; i < sum; i++)
        {
            pfw = fopen(ppf[i], "wb");
            for (int j = 0; j < length / sum; j++)
            {
                fputc(fgetc(pfr), pfw);
            }
            fclose(pfw);
        }

    }
    else
    {
        for (int i = 0; i < sum - 1; i++)
        {
            pfw = fopen(ppf[i], "wb");
            for (int j = 0; j < length / (sum - 1); j++)
            {
                fputc(fgetc(pfr), pfw);
            }
            fclose(pfw);
        }
        {
            pfw = fopen(ppf[sum - 1], "wb");
            for (int i = 0; i < length%sum; i++)
            {
                fputc(fgetc(pfr), pfw);
            }
            fclose(pfw);
        }

    }
    fclose(pfr);
}


void subsectionjie(int sum)
{
    FILE *pnew = fopen("C:\\Users\\Administrator\\Desktop\\TT.PNG", "wb");
    for (int i = 0; i <sum; i++)
    {
        FILE *p = fopen(ppf[i], "rb");
        while (!feof(p))
        {
            fputc(fgetc(p), pnew);
        }
        fclose(p);
    }
    fclose(pnew);
}


void main()
{
    int sum = 0;
    scanf("%d", &sum);
    ppf = malloc(sizeof(char *)*sum);
    for (int i = 0; i < sum; i++)
    {
        ppf[i] = malloc(sizeof(char) * 1024);
        memset(ppf[i], '\0', 1024);
        sprintf(ppf[i], "C:\\Users\\Administrator\\Desktop\\X %d.PNG",i);
    }
   
    subsectionjia(sum);
    subsectionjie(sum);

    system("pause");
}

不知道 错误在哪!
分割4个 结果是这样的:
图片附件: 游客没有浏览图片的权限,请 登录注册

合并的结果  
图片附件: 游客没有浏览图片的权限,请 登录注册

原始图片:
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: Desktop include return 二进制 源文件 
2016-10-09 15:14
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
没人帮忙看看啊?
2016-10-09 16:02
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
把你的文件用附件的方式发一下
2016-10-09 16:03
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 3楼 grmmylbs
X.rar (544.5 KB)
2016-10-09 16:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
一系列的错误,和你之前的帖子 https://bbs.bccn.net/thread-469513-1-1.html 错得一模一样
2016-10-09 16:27
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 5楼 rjsp
求大神指点 哪里错了?
2016-10-09 16:31
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 5楼 rjsp
  本人刚学的C啊  真不知道哪里错了啊  是写法上还是逻辑上 还是说都有错误? 哪个地方写错了啊?
2016-10-09 16:43
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
合并的时候把结束符写进去了,这样改一下:

程序代码:
void subsectionjie(int sum)
{
    FILE *pnew = fopen("C:\\Users\\Administrator\\Desktop\\TT.PNG", "wb");
    int c;
    for (int i = 0; i <sum; i++)
    {
        FILE *p = fopen(ppf[i], "rb");
        while (!feof(p))
        {
            c = fgetc(p);
            if (c == -1)
            {
                break;
            }
            fputc(c, pnew);
        }
        fclose(p);
    }
    fclose(pnew);
}
2016-10-09 16:58
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 8楼 grmmylbs
可以了  谢谢  能问下  是什么原因造成的吗? 新手 不是非常明白
2016-10-09 17:08
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
每个文件都有结束符,你把结束符写进去了,所以只显示第一个文件的内容
2016-10-09 17:10
快速回复:谁帮我看看这段,分割和合并二进制文件哪里出错了
数据加载中...
 
   



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

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