69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<string.h> //记得加头文件
void main()
{
FILE *fp2,*fp3,*PA,*fp1,*fp4;
char src[5];
unsigned char data[16] = {
0xFF, 0xFE, 0x87, 0x65, 0xF6, 0x4E, 0xCD, 0x64, 0x5C, 0x4F, 0x88, 0x5F, 0x09, 0x67, 0x28, 0x75
};//"文件操作很有用"的unicode(little_endian)的内码.
int NUM=0,i=0,ID=-1,filelen=0,j=0;
unsigned short *pFileBuf;
fp1=fopen("text.txt","r+");
if (fp1==0)
{
printf("open file failure!\n");
return;
}
ID = fileno(fp1);
filelen = filelength(ID);
pFileBuf =(unsigned short*)malloc(filelen+1); //注意多分配一个字节的空间
if (pFileBuf == NULL)
{
printf("malloc memory failure!\n");
fclose(fp1);
return;
}
memset(pFileBuf, 0, filelen);
fread(pFileBuf, filelen, 1, fp1);
fclose(fp1);
fp2=fopen("text1.txt","w+");
if (fp2==0)
{
printf("open file failure!\n");
free(pFileBuf);
return;
}
fwrite(pFileBuf,filelen,1,fp2);
fwrite(data,sizeof(data),1,fp2);
fclose(fp2);
fp4 = fopen("file.txt","w+");
if (fp4==0)
{
printf("open file failure!\n");
free(pFileBuf);
return;
}
printf("filelen=%d",filelen);
filelen = filelen/2-1;
for (i=0; i<filelen; i+=1)
{
if (pFileBuf[i] == 0x4fe1 && pFileBuf[i+1] == 0x606f)
{ //上面这两个数分别是'信'和'息'的unicode little_endin的内码.
NUM++;
fprintf(fp4,"第%d次 %d\n",NUM,i);//如果统一编码,这个也得改.
}
}
free((void*)pFileBuf);
fclose(fp4);
}
//本代码使用tiny c compiler 0.9.25 for windows xp 编译通过