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字符啊?
另外,刚刚的代码中少了一对括号,不好意思~ 展开
**********
程序结果:
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字符啊?
另外,刚刚的代码中少了一对括号,不好意思~ 展开
1个回答
展开全部
你只能全用 unicode.
ANSI转Unicode,空白以后的码,前面加一个0x00,组成两字节码。 空白以前的码,要查一下编码。(我只记得回车是0x2029; 新行是0x2028;其它码你转空白0x0020也可以)。
注意notepad写成的Unicode文件开始处有不可见特别码,所以输出文件头要先写这个特别码。特别码的值与unicode 大端码或小端码有关。小端码0xfffe, 大端码 0xfeff。
Unicode文件要用 二进制文件 打开 读写。
ANSI转Unicode,空白以后的码,前面加一个0x00,组成两字节码。 空白以前的码,要查一下编码。(我只记得回车是0x2029; 新行是0x2028;其它码你转空白0x0020也可以)。
注意notepad写成的Unicode文件开始处有不可见特别码,所以输出文件头要先写这个特别码。特别码的值与unicode 大端码或小端码有关。小端码0xfffe, 大端码 0xfeff。
Unicode文件要用 二进制文件 打开 读写。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询