算法竞赛入门经典(第二版)第三章数组和字符串中竞赛题目选讲1

3-1例题tex中的引号

在TeX中,左双引号是“"”,右双引号是“"”,输入一篇包含双引号的文章你的任务是把它转换成tex的格式
样例输入:
“you are smart,”
样例输出
“you are smart,”

  1. 使用fgetc(fin)可以打开的文件fin中读取一个字符。一般情况下应当在检查它不是EOF后再将其转换成char值。从标准输入读取一个字符可以用getchar,它等价于fgetc(stdin)
  2. 如果用scanf("%d",&n)读取整数,则要是在输入123多加了一个空格,getchar读取的将是这一个空格,如果在123之后紧跟着换行则读取到将是回车符“\n"
  3. 在使用fgetc和getchar时应避免写出和操作系统相关的程序
  4. fgets(buf,maxn,fin)将读取完整的一行放在字符数组buf种。应当保证buf足够存放下文件的一行内容。除了在文件结束前没有遇到”\n“这种特殊情况外,buf总是以”\n“结尾。当一个字符都没有读到时,fgets返回null。
  5. gets(s),没有指明读取的最大字符数。这里就出现了一个潜在的问题gets将不停地往s种存储内容,而不管是否存储得下
  6. C语言并不禁止程序读写"非法内存"
  7. C语言种的gets(s)存在缓冲区溢出漏洞,不推荐使用。在C11标准里,该函数已被正是删除。
//本题的特点是可以边读边处理,而不需要把输入字符串完整地存下来
#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;
}

猜你喜欢

转载自blog.csdn.net/qq_43233736/article/details/83043320
今日推荐