在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''.
scanf("%s")碰到空格或者TAB就会停下来。 虽然下次调用时会输入下一个字符串,可是不知道两次输入的字符串中间有多少个空格、 TAB甚至换行符。
不同操作系统的回车换行符是不一致的。 Windows是“\r”和“\n”两个符,Linux是“\n”,而MacOS是“\r”。 如果在Windows下读取Windows文件,fgetc和getchar会把“\r""吃掉”,只剩下“\n”;但如果要在Linux下读取同样一个文件,它们会忠实地先读取“\r”,然后才是“\n”。
第一种方法是使用“fgetc(fin)”,它读取一个打开的文件fin,读取一个字符,然后返回一个int值。 为什么返回的是int而不是char呢?因为如果文件结束,fgetc将返回一个特殊标记EOF,它并不是一个char。 如果把fgetc(fin)的返回值强制转换为char,将无法把特殊的EOF和普通字符区分开。 如果要从标准输入读取一个字符,可以用getchar,它等价于fgetc(stdin)。
使用fgetc(fin)可以从打开的文件fin中读取一个字符。 一般情况下应当在检查它不是EOF后再将其转换成char值。 从标准输入读取一个字符可以用getchar,它等价于fgetc(stdin)
#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;
}