C语言 将多个文本文件合成到一个文件中

将文件01.txt到87.txt中的内容合成到一个名为data.txt的文件中,程序见附。但是运行之后只能正确复制01.txt,但是02.txt之后全部为乱码,请高手帮忙... 将文件01.txt到87.txt中的内容合成到一个名为data.txt的文件中,程序见附。但是运行之后只能正确复制01.txt,但是02.txt之后全部为乱码,请高手帮忙看看。
**********
程序结果:
01

(正确的文本)

02

(乱码……)

03

(乱码……)

……

*****************
程序如下:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char name[]="00.txt";
FILE *fp1,*fp2;
char ch;
int i,j;
for(i=0;i<=8;i++)
for(j=0;j<=9;j++)
int k=i*10+j;
if(k>0&&k<=87)
{
name[0]='0'+i;
name[1]='0'+j;
if((fp1=fopen(name,"rb+"))==NULL)
return;
if((fp2=fopen("data.txt","a+"))==NULL)
return;
fprintf(fp2,"%c%c\n\n",name[0],name[1]);
fclose(fp2);
if((fp2=fopen("data.txt","ab+"))==NULL)
return;
while(!feof(fp1))
{
ch=fgetc(fp1);
if(ch!=EOF)
fputc(ch,fp2);
}
fclose(fp1);
fclose(fp2);
if((fp2=fopen("data.txt","a+"))==NULL)
return;
fprintf(fp2,"\n\n\n\n");
fclose(fp2);
}
}
现在已经查明是文件编码的问题。
01.txt是ANSI编码,剩下的是Unicode编码……
现在问如何处理Unicode字符啊?

另外,刚刚的代码中少了一对括号,不好意思~
展开
 我来答
L_o_o_n_i_e
2010-01-08 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5254万
展开全部
你只能全用 unicode.

ANSI转Unicode,空白以后的码,前面加一个0x00,组成两字节码。 空白以前的码,要查一下编码。(我只记得回车是0x2029; 新行是0x2028;其它码你转空白0x0020也可以)。

注意notepad写成的Unicode文件开始处有不可见特别码,所以输出文件头要先写这个特别码。特别码的值与unicode 大端码或小端码有关。小端码0xfffe, 大端码 0xfeff。

Unicode文件要用 二进制文件 打开 读写。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式