1. 程式人生 > >題解 UVA272 【TEX Quotes】

題解 UVA272 【TEX Quotes】

因此 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】