关于c文件图片结合器
我有一个问题一直没有解决,我之前看的小甲鱼的c文件操作的那个图片文件结合器,我在下面也做了一个,不过呢,为什么生成的图片格式可以打开,但是就是不能该成压缩格式,改的话就提示失败,文件文件结合就可以。为什么呢,是不是写入的那张图片的格式有什么特殊要求吗???现在很困惑,希望看到了可以给我帮助。先谢谢各位了。。。 你的错误很多,这是我写的源码,你看一下:#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *f_pic, *f_file, *f_finish; //定义3个文件指针变量
char ch,pic_name, file_name, finish_name;//对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"); //这里是程序运行到最后把程序定在哪儿,就是为了不让它哗啦一闪就没了的操作
}
没有源码一切都是空谈 sidfate 发表于 2014-6-5 09:13 static/image/common/back.gif
没有源码一切都是空谈
#include <stdio.h>
#include <stdlib.h>
Icon();
Jieheqi()
{
FILE *pic_name,*file_name,*finish_name;
char ch,picname,filename,finishname;
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 你写的代码和我的一样,我的不过是在你输错了地址或文件不存在可以从新输入,你看到我下面的图片了吗。图片和文件还是没法结合在一起,结合成rar各式的还是打不开。。你写入的图片的各式什么的是不是需要特别的要求呀?? 青玄 发表于 2014-6-5 20:18 static/image/common/back.gif
你的错误很多,这是我写的源码,你看一下:
你写的代码和我的一样,我的不过是在你输错了地址或文件不存在可以从新输入,你看到我下面的图片了吗。图片和文件还是没法结合在一起,结合成rar各式的还是打不开。。你写入的图片的各式什么的是不是需要特别的要求呀?? 1798927139 发表于 2014-6-5 21:31 static/image/common/back.gif
你写的代码和我的一样,我的不过是在你输错了地址或文件不存在可以从新输入,你看到我下面的图片了吗。图 ...
没有啊!我的也是jog格式的啊!嗯...,可能是你的压缩包有问题吧!或者是你的图片有问题,以至于没有写入成功,你要不再换张图片,看看怎么样!我的在开始的时候有的图片也没哟成功读取,最后换了一下才成功的,也许是这个程序还不是很完善吧!以后有机会了,在完善完善!{:2_27:} 不好意思打错了,图片的格式是jpg格式!嘿嘿! 青玄 发表于 2014-6-6 12:36 static/image/common/back.gif
不好意思打错了,图片的格式是jpg格式!嘿嘿!
恩恩,我们在完善完善 #include<stdio.h>
void main()
{
FILE *fp,*p1,*p2;
char ch,filename,k1,k2;
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);
}
青玄 发表于 2014-6-5 07:13
你的错误很多,这是我写的源码,你看一下:
请问你的合成器,先输入rar文件,后输入图片文件(也就是在合成后,rar的二进制代码在前 jpg 二进制代码放其后),这样子,可以么?
为什么,我写的合成器,只能把图片的代码放前面,rar的放后面,才可哟?
haiouda 发表于 2015-4-12 20:42
请问你的合成器,先输入rar文件,后输入图片文件(也就是在合成后,rar的二进制代码在前 jpg 二进制代码 ...
恩~~ 这个我就不清楚了!
页:
[1]