#include<bits/stdc++.h> using namespace std; int main(){ int c,q=1; while( (c = getchar()) !=EOF) //getchar是读入 单个字符
{ if(c =='"'){ printf("%s",q ? " . ":" 。"); q=!q; } else printf("%c",c); } return 0; } // 输入 "aSAs","aSzAs" 输出 .aSAs。,.aSzAs。 本题的特点是不需要把字符串完整的存下来,因从getchar是个不错的选择 //getchar 是 读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。 //返回类型为int型,为用户输入的ASCII码或EOF。 // a?b:c 的含义 当a为真的时候值为b,否则为c //直接用到了赋值语句c=getchar()的返回值,把它和EOP比较。这样的写法并不常见,但有时能让代码更加简洁
scanf("%s", )输入字符串,碰到空格或者TAB就会停下来,虽然下次调用的时候会输入下一个字符串,可是不知道两次输入的字符串中间有多少个空格、TAB甚至换行符。所以,在处理此题的时候,可以用以下两种方法。
第一种是使用fgetc(fin),它读取一个打开的文件fin,读取一个字符,然后返回一个inyt值,为什么不返回char?因为如果文件结束,fgetc将返回一个特定标记EOF,他并不是一个char。如果把fgetc(fin)的返回值强制转换为char,将无法把特殊的EOF和普通字符区分开。如果要从标准输入读取一个字符,可以用getchar,它等价于fgetc(stdin)
使用fgetc(fin)可以从打开的文件fin中读取一个字符,一般情况下应到在检查它不是EOF后再将其转换成char值。