C语言:实现中文引号 → 英文引号的替换

用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;  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值