題解 UVA272 【TEX Quotes】
阿新 • • 發佈:2018-03-20
因此 bits 如何判斷 ets bsp light 有效 name std
本題的關鍵是,如何判斷一個雙引號是左雙引號還是右雙引號。
方法一:使用“fgetc(fin)”它讀取一個打開的文件fin讀取一個字符,然後返回一個int值。
如果把fgetc(fin)的返回值強制轉換為char,將無法把特殊的EOF和普通字符區分開。如果要從標準輸入讀取一個字符,可以用getchar,它等價於fgetc(stdin)。
方法二:使用“fgets(buf, maxn, fin)”讀取完整的一行,其中buf的聲明為char
buf[maxn],這個函數讀取不超過maxn-1個字符,然後在末尾添上結束符“\0”,因此不會出現越界的情況。之所以說可以用這個函數讀取完整的一行,是因為一旦讀到回車符“\n”,讀取工作將會停止,而這個“\n”也會是buf字符串中最後一個有效字符(再往後就是字符串結束符“\0”了)。
本題的特點是:
可以邊讀邊處理,而不需要把輸入字符串完整地存下來,因此getchar是一個不錯的選擇。
#include<bits/stdc++.h> using namespace std; int main() { int c,q=1; while((c=getchar())!=EOF) { if(c==‘"‘){printf("%s",q?"``":"‘‘");q=!q;} else printf("%c",c); } return 0; }
題解 UVA272 【TEX Quotes】