Tex中的引号--UVa 272

题目:在tex中,有做双引号和右双引号,你的任务是把他转化成tex的格式。
特点:边读边处理,不需要把输入字符串完整保留下来。

#include<stdio.h>
int main(){
	int c,q=1;
	while((c = getchar())!=EOF){
		if(c=='"')  {
			printf("%s",q?"''");
			q = !q;
		}
		else  printf("%c",c);
	}
	return 0;
}

思路:本题的关键是如何判断一个双引号是左双引号还是右双引号。使用一个标志变量即可。
但字符串的输入如何解决呢?

scanf("%s")

使用此函数进行输入时,碰到空格和tab就会停下。虽然下次调用会输入到下一个字符串,可是不知道两次输入的字符串之间有多少个空格,tab甚至是换行键。
那么第一种方法是fgetc(fin)读取一个打开的文件fin,读取一个字符,返回一个int 值。
你可能会问,为什么不会char呢?因为文件结束后,fgetc将返回一个特殊标记的EOF,他并不是一个char。如果是char,那么怎么区分哩!所以一般在检查他不是EOF后再将其转换为char值。从标准输入读取一个字符可以用getchar。等价于fgetc(stdin).
或者是fgets(buf,maxn,fin)读取完整的一行放在字符数组buf中,所以buf应该是足够大的,除了在文件结束前没遇见\n这种情况,buf总是以\n结尾。一个字符都没有读到时,fgets返回HULL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值