TeX中的引号(Tex Quotes, UVa 272)
在TeX中,左双引号是“``”,右双引号是“''”。输入一篇包含双引号的文章,你的任务是 把它转换成TeX的格式。
样例输入: "To be or not to be," quoth the Bard, "that is the question".
样例输出: ``To be or not to be,'' quoth the Bard, ``that is the question''.
本题的关键有两个:输入字符串和判断左右括号。
1、输入字符串。
之前学习了使用“scanf("%s")”输入字符串,但却不能在本题中使用它,因为它碰到空格或者TAB就会停下来。虽然下次调用时会输入下一个字符串,可是不知道两次输入的字符串中间有多少个空格、TAB甚至换行符。
可以用下述两种方法解决这个问题:
①使用“fgetc(fin)”,它读取一个打开的文件fin,读取一个字符,然后返回一 个int值。如果文件结束,fgetc将返回一个特殊标记 EOF,这样可以判断是否输入结束。如果要从标准输入读取一个字符,可以用getchar,它等价于fgetc(stdin)。注意:在使用fgetc和getchar时,应该避免写出和操作系统相关的程序。
②使用“fgets(buf, maxn, fin)”读取完整的一行,其中buf的声明为char buf[maxn]。这个函数读取不超过maxn-1个字符,然后在末尾添上结束符“\0”,因此不会出现越界的情况。之所以说可以用这个函数读取完整的一行,是因为一旦读到回车符“\n”,读取 工作将会停止,而这个“\n”也会是buf字符串中最后一个有效字符(再往后就是字符串结束 符“\0”了)。只有在一种情况下,buf不会以“\n”结尾:读到文件结束符,并且文件的最后一 个不是以“\n”结尾。即:除了在文件结束前没有遇到“\n”这种特殊情况外,buf总是 以“\n”结尾。当一个字符都没有读到时,fgets返回NULL。
2、判断左右分号。
用一个标识变量q来判断。
#include<cstdio>
using namespace std;
int main(){
int c,q=;
while((c=getchar()) != EOF){
if(c=='"'){
printf("%s",q?"``":"''");
q=!q;
}
else printf("%c",c);
}
return ;
}
注意:①(c=getchar()) != EOF ②三目运算符
最新文章
- 页面Button/Link 传参数
- 打包java项目为可执行程序(exe)
- Atitit 马尔可夫过程(Markov process)&#160;hmm隐马尔科夫。&#160;马尔可夫链,的原理attilax总结
- windows重新获取IP
- [MFC] 向文本编辑框写入数据与从其中读取数据
- 配置sql server 2000以允许远程访问 及 连接中的四个最常见错误
- FastSocket学习笔记~制定自已的传输协议
- centos vpn client set
- css3 2D变换 transform
- Nginx Upload Module 上传模块
- 性能调优案例分享:jvm crash的原因 2
- BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]
- 有关centos7 图形化root用户登录
- Beta冲刺——第二天
- [转]The superclass ";javax.servlet.http.HttpServlet"; was not found on the Java Build Path
- 更改配置:远程访问gitlab的postgresql数据库
- Kattis之旅——Rational Arithmetic
- js中基本事件的总结,onclick、onblur、onchange等
- 20155216 Exp7 网络欺诈技术防范
- UI5-文档-4.18-Icons
热门文章
- css3中 弹性盒模型布局之box-flex
- Smobiler实现列表展示—GridView(开发日志十二)
- compact处理流程分析
- Android实战简易教程-第二十四枪(基于Baas的用户表查询功能实现!)
- Windowns 无法启动 Office Software Protection Platform 服务,系统找不到指定的文件
- (Go)08.time示例
- Anagram Groups(字符串)
- codevs2594解药还是毒药(状压dp)
- Spring Boot 打 war 包的步骤
- 模拟Queue(wait/notify)