讀古今文學網 > C語言解惑 > 1.1 中文字符以假亂真 >

1.1 中文字符以假亂真

不管是初學者還是有經驗的程序員,都會碰到這個問題。這往往是在拼音狀態下輸入標點符號之類的字符造成的。假設語句


printf
("%s"
,"OK"
);
  

中的「,」號是中文字符,編譯器會給出如下信息:


error C2018
: unknown character '0xa3'
error C2018
: unknown character '0xac'
  

注意 只要給出「0xa」的標識,就可斷定該行存在中文字符。

只要稍微注意一下就可以避免這個錯誤。其實,多數的錯誤不是在輸入程序時誤輸入,而是直接將Word文檔裡或網上的程序拷貝到源文件中造成的。一般是因為整理文檔裡的程序時,人為地使用中文字符或插入圖形符號,例如&、[、]、&、#、﹨等符號。

只要編譯系統給出出錯信息並定位到所在行,就很容易判斷出錯誤。有點難度的是中文空格,這個空格一般有三種情況:一行的首、尾和其他位置。假設下面程序除第1行之外,其他行的首尾均有空格,看看這類錯誤的表現形式。


#include <stdio.h>
void main
( 
) 
{ 
          printf
("%s\n"
,"OK"
);   //
打印輸出
}
  

當編譯給出第二行有錯誤的信息時,可以把鼠標光標放到第一行的尾部,按一下「↓」鍵,這時光標移到下一行並停在離「)」的一段距離處,這說明光標左邊有中文空格。用Backspace鍵刪除前面的空格,刪到「)」處即可。如果將光標放在「#」處,按一下「↓」鍵,光標會停在離字母「v」的一段距離處,使用刪除鍵刪除右邊的空格即可。

其他各行同樣處理,對於第4行,如果「//」號的字體不是綠色的,說明註釋語句之前有空格,註釋不起作用,往左邊刪除,直到「//」號變為綠色。

需要注意的是,編譯拷貝的程序時,可能會給出很多錯誤信息,而且可能給出的錯誤種類也很多。如果第1個錯誤就有「0xa」的標識,則一定要先解決它。有時解決它之後,其他的錯誤可能就沒有了。