用C语言实现中文引号 —> 英文引号的替换。
p.s. 你确定正常人会用C来做这种事情吗?替换引号有什么用吗?!
p.s. 的 p.s. 嗯暂且还是补充一下,
//汉字双引号:“→e2 80 9c ”→e2 80 9d
//单引号 ‘→98 ’→99
这是通过16进制查看器 Hex Editor Neo 发现的。
附上源码
C语言,
练习fgetc(), fputc(),
代码性质:emm? 奇怪的属性增加了,
给输入文档命名时,必须取名:“test.txt”。或者改动源码。
#include <stdio.h>
//汉字双引号:“→e2 80 9c ”→e2 80 9d
//单引号: ‘→98 ’→99
int main(void)
{
FILE *fp1=fopen("test.txt","r");
FILE *fp2=fopen("output.txt","w");
char ch;
int i=0;
while ((ch = fgetc(fp1)) != EOF)// 读取到文件末尾或读取失败时返回 EOF
{
if(ch==-30/*0xe2*/)
{
//printf("%c\n",ch);
if((ch=fgetc(fp1))==EOF)
{
fputc(0xe2,fp2);
fclose(fp2);
return 0;
}
else
{
if(ch==-128/*0x80*/)
{
if((ch=fgetc(fp1))==EOF)
{
fputc(0xe2,fp2);
fputc(0x80,fp2);
fclose(fp2);
return 0;
}
else
{
if((ch==-99/*0x9c*/)||(ch==-100/*0x9d*/))
{
fputc('"',fp2);
i++;
printf("%d\n",i);
}
else if((ch==-104/*0x99*/)||(ch==-103/*0x98*/))
{
fputc(0x27,fp2);//单引号
i++;
printf("%d\n",i);
}
else
{
fputc(0xe2,fp2);
fputc(0x80,fp2);
fputc(ch,fp2);
//printf("%d\n",ch);
//printf("%c\n",ch);
}
}
}
}
}
else
{
fputc(ch,fp2);
printf("%d\n",ch);
}
}
fclose(fp2);
//ch='ca';
//printf("%c\n",ch);
//putchar(0x9d);
//getchar();//等待
return 0;
}