鱼C论坛

 找回密码
 立即注册
查看: 1987|回复: 11

关于c文件图片结合器

[复制链接]
发表于 2014-6-5 07:13:32 | 显示全部楼层 |阅读模式
1鱼币
我有一个问题一直没有解决,我之前看的小甲鱼的c文件操作的那个图片文件结合器,我在下面也做了一个,不过呢,为什么生成的图片格式可以打开,但是就是不能该成压缩格式,改的话就提示失败,文件文件结合就可以。为什么呢,是不是写入的那张图片的格式有什么特殊要求吗???现在很困惑,希望看到了可以给我帮助。先谢谢各位了。。。

最佳答案

查看完整内容

你的错误很多,这是我写的源码,你看一下:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-5 07:13:33 | 显示全部楼层
你的错误很多,这是我写的源码,你看一下:
#include <stdio.h>
#include <stdlib.h>
void main()
{
        

        FILE *f_pic, *f_file, *f_finish;                 //定义3个文件指针变量
        char ch,pic_name[20], file_name[20], finish_name[20];//对3个文件命名所需的空间
        
    printf("*************** <change the world by programe> *****************\n\n");
        printf("-------------图片文件合成器,快来试试吧!^_^!-----------------\n\n\n\n");

        printf("哈哈!!输入需要合成的图片和文件的名称吧 !!^&^!!: \n"); 
        printf("\n");
        printf("亲!输入图片的名字加后缀思密达: ");
        scanf("%s", pic_name);    //输入图片文件的名字
        printf("输入需要隐藏的文件的名字和后缀名思密达: ");
        scanf("%s", file_name);    //输入其它二进制文件的名字
        printf("最后!^&^!呵呵!输入需要生成的文件的名字和后缀名: ");
        scanf("%s", finish_name);    //输入将要合成的文件的名字
        
        //打开图片文件,并为只读的二进制
        if( !(f_pic = fopen(pic_name, "rb")))   //判断如果这个图片文件打不开或路径不对
        {
                printf("Cannot open the picture %s !", pic_name);  //那么就打印提示信息,最后终止程序
                return;
        }
        
        if( !(f_file = fopen(file_name, "rb")))      //打开二进制文件 
        {
                printf("Cannot open the file %s !", file_name);
                return;
        }
        
        if( !(f_finish = fopen(finish_name, "wb")))    //打开将要写入的文件,并且可以以二进制的形式写入
        {
                printf("Cannot open the file %s !", finish_name);
                return;
        }
        
        while( !(feof(f_pic)))     //这里是说f_pic所指向的内容如果没结束的话,那就继续循环,其中feof();为
        {                          //判断一个文件是否结束的函数
                ch = fgetc(f_pic);     //获得指针f_pic所指向的内容,并把它赋给ch,其中fgetc();是读取函数也就是获取
                fputc(ch, f_finish);   //把获取的字符写入到f_finish的这个文件中,其中fputc();是写入函数
        }
        fclose(f_pic);             //最后擦屁股,关掉f_pic这个文件
        
        while( !(feof(f_file)))      //同上,一样的,这里我就不一一说了,呵呵  !!!^_^!!!
        {
                ch = fgetc(f_file);
                fputc(ch, f_finish);
        }
        fclose(f_file);            //擦屁股,关闭文件
        fclose(f_finish);           //再擦屁股,呵呵!!^&^!!
        printf("\n\n");
    printf("恭喜你!哈哈哈哈哈!文件成功合成  !!^_^!!\n");
        printf("\n");
        system("pause");                  //这里是程序运行到最后把程序定在哪儿,就是为了不让它哗啦一闪就没了的操作
        
}




QQ截图20140605201521.jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-5 09:13:57 | 显示全部楼层
没有源码一切都是空谈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-5 12:45:42 | 显示全部楼层

#include <stdio.h>
#include <stdlib.h>
Icon();
Jieheqi()
{
        FILE *pic_name,*file_name,*finish_name;       
        char ch,picname[50],filename[50],finishname[50];
        int p,q=0;       
        while(1)
        {       
               
                if(q==0)
                {
                        while(1)
                        {
                                system("cls");
                                Icon();
                                printf("                                     文件结合器\n");
                                Icon();
                                printf("\n\n\n\n");
                                p=0;
                               
                               
                                if(p==1)
                                {
                                        printf("                                         请重新输入。\n");
                                }
                                printf("                   请输入文件的地址或名称A(包括文件类型):");
                                scanf("%s",picname);
                                if(!(pic_name=fopen(picname,"rb")))
                                {
                                        printf("                              对不起,你的该文件不存在。\n");
                                        printf("\n\n");
                                        p=1;
                                        printf("                                                       请按任意键重新选择。");
                                        getch();
                                }
                                else
                                {
                                        break;
                                }
                               
                        }
                }
                else
                {
                        system("cls");
                        Icon();
                        printf("                                     文件结合器\n");
                        Icon();
                        printf("\n\n\n\n");
                        printf("                   请输入文件的地址或名称A(包括文件类型):%s\n",picname);
                       
                }
                p=0;
               
                if(p==1)
                {
                        printf("                                         请重新输入。\n");
                }
                printf("                   请输入文件的地址或名称B(包括文件类型):");
                scanf("%s",filename);
                if(!(file_name=fopen(filename,"rb")))
                {
                        printf("                            对不起,你的文件不存在。\n");
                        printf("\n\n");
                        p=1;
                        q=1;
                        printf("                                                       请按任意键重新选择。");
                        getch();
                       
                }
                else
                {
                        break;
                }
        }       
        printf("                     请输入合成的文件地址名称(包括类型):");
        scanf("%s",finishname);
        if(!(finish_name=fopen(finishname,"wb")))
        {
                printf("                    对不起,你的合成文件没有成功。\n");
                exit(0);
        }
        printf("                         合成成功,请打开文件查看。\n");
        printf("                                                   请按任意键返回上一级。");
        getch();
        while(!(feof(pic_name)))
        {
                ch=fgetc(pic_name);
                fputc(ch,finish_name);
        }
        fclose(pic_name);
        while(!(feof(file_name)))
        {
                ch=fgetc(file_name);
                fputc(ch,finish_name);
        }
       
        fclose(file_name);
        fclose(finish_name);
       
       
       
}


H:\10.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-5 21:16:25 | 显示全部楼层
你写的代码和我的一样,我的不过是在你输错了地址或文件不存在可以从新输入,你看到我下面的图片了吗。图片和文件还是没法结合在一起,结合成rar各式的还是打不开。。你写入的图片的各式什么的是不是需要特别的要求呀??
NeoImage_副本.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-5 21:31:47 | 显示全部楼层
青玄 发表于 2014-6-5 20:18
你的错误很多,这是我写的源码,你看一下:

你写的代码和我的一样,我的不过是在你输错了地址或文件不存在可以从新输入,你看到我下面的图片了吗。图片和文件还是没法结合在一起,结合成rar各式的还是打不开。。你写入的图片的各式什么的是不是需要特别的要求呀??

点评

没有啊!我的也是jog格式的啊!嗯...,可能是你的压缩包有问题吧!或者是你的图片有问题,以至于没有写入成功,你要不再换张图片,看看怎么样!我的在开始的时候有的图片也没哟成功读取,最后换了一下才成功的,也许  详情 回复 发表于 2014-6-6 12:35
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-6 12:35:58 | 显示全部楼层
1798927139 发表于 2014-6-5 21:31
你写的代码和我的一样,我的不过是在你输错了地址或文件不存在可以从新输入,你看到我下面的图片了吗。图 ...

没有啊!我的也是jog格式的啊!嗯...,可能是你的压缩包有问题吧!或者是你的图片有问题,以至于没有写入成功,你要不再换张图片,看看怎么样!我的在开始的时候有的图片也没哟成功读取,最后换了一下才成功的,也许是这个程序还不是很完善吧!以后有机会了,在完善完善!{:2_27:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-6 12:36:44 | 显示全部楼层
不好意思打错了,图片的格式是jpg格式!嘿嘿!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-6 13:06:32 | 显示全部楼层
青玄 发表于 2014-6-6 12:36
不好意思打错了,图片的格式是jpg格式!嘿嘿!

恩恩,我们在完善完善
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-12 11:43:45 | 显示全部楼层
#include<stdio.h>

void main()
{
        FILE *fp,*p1,*p2;
        char ch,filename[20],k1[20],k2[20];

        printf("请输入要合成的文件1: ");
        scanf("%s",k1);
        printf("请输入要合成的文件2: ");
        scanf("%s",k2);
        printf("请输入合成后的文件名: ");
        scanf("%s",filename);
       
        p1 = fopen(k1,"rb");
        p2 = fopen(k2,"rb");
        fp = fopen(filename,"ab");


        while( !feof(p1) )
        {
                ch = fgetc(p1);
                fputc(ch,fp);
        }
        while( !feof(p2) )
        {
                ch = fgetc(p2);
                fputc(ch,fp);
        }

        printf("\n合成成功!");

        fclose(fp);
}

QQ截图20150412114457.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-12 20:42:43 | 显示全部楼层
青玄 发表于 2014-6-5 07:13
你的错误很多,这是我写的源码,你看一下:

请问你的合成器,先输入rar文件,后输入图片文件(也就是在合成后,rar的二进制代码在前 jpg 二进制代码放其后),这样子,可以么?

为什么,我写的合成器,只能把图片的代码放前面,rar的放后面,才可哟?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-13 20:08:56 | 显示全部楼层
haiouda 发表于 2015-4-12 20:42
请问你的合成器,先输入rar文件,后输入图片文件(也就是在合成后,rar的二进制代码在前 jpg 二进制代码 ...

恩~~ 这个我就不清楚了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 21:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表