70,022
社区成员




fp1=fopen("d:\\cs\\cs.jpg","wt++")
改成
fp1=fopen("d:\\cs\\cs.jpg","wb++")
试下。以前也遇到过类似情况,对于图片的写入好像要用二进制方式写。
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *fp;
FILE *fp1;
char str[256];
scanf("%s",str);
if((fp=fopen(str,"rb+")) == NULL)
{
printf("ERROR");
exit(1);
}
if((fp1=fopen("2.jpg","wt++")) ==NULL)
{
printf("error1");
exit(1);
}
fseek(fp,0L,SEEK_END);
long length;
long n,cpyfinish;
length = ftell(fp);
rewind(fp);
char pBuffer[1]={0};
// unsigned char buff;
//while (!feof(fp))
while(length>0)
{
n = fread(pBuffer, 1, 1, fp);
cpyfinish =fwrite(pBuffer, 1, n, fp1);
length-=cpyfinish;
}
if(ferror(fp))
puts("读取出错");
else
puts("读取成功");
fclose(fp);
fclose(fp1);
return 0;
}