2013-10-07 30 views
2

我正在創建一個需要文本文件和單詞的程序。它讀取一個文本文件並將該單詞與正在讀取的當前單詞進行比較。我建立它的方式是忽略「's」。例如,如果我在搜索「美國國家航空航天局」,並且遇到「美國航空航天局」這個詞,它就會將其讀作「美國國家航空航天局」。不幸的是,我不能通過使用「if(ch ==''')」,「ch」是當前字符來捕捉撇號。我認爲可能是因爲文本文件中的撇號看起來像這樣。我不知道如何適應這一點。if語句中無法捕捉撇號

這裏就是我要趕一個撇號:

else if (ch == '\'') 
       { 

#if 1   
        printf("Comparing Apostrophe\n"); 
#endif 
        continue; 

       } 

請注意,這是一個更大的計劃,這我不能告訴你的一部分。這解釋了「else if」離子的開始。

謝謝。

+0

要檢查你在文本什麼樣的撇號,您可以將「NASA's」部分複製到一個新的文本文件中,並編寫一個小程序,顯示每個字母的ASCII碼。 – PiotrK

+1

@PiotrK爲什麼*寫*一個程序來做到這一點?只需使用常規的十六進制編輯器我是HxD的粉絲,但任何十六進制編輯器都可以工作。 – neminem

回答

2

如果你的撇號看起來像''',那麼你應該檢查'''字符,它不會爲你做。這是一個不同的字符 - 看起來像擴展ASCII字符146(十進制),「右單引號」。文本可能來自MS Office - 它喜歡將單引號和雙引號轉換爲單個和雙重所謂的「智能」引號(如果您對Office以外的文本進行任何操作,它們都不是)。已經指出,「左單引號」ascii字符145是該集合的另一半,所以在你的文本中也可能有一些。即:

else if (ch == '\'' || ch == '’' || ch == '‘') 
{ 
    [do stuff] 
} 
+1

+1。我也會檢查一個左邊的單引號(十進制145),因爲它們有時被使用(適當地)。 – lurker

+0

@mbratch好點。 – neminem

0

而不是使用轉義字符您可以使用ASCII號撇號,這是39: 否則,如果(CH == 39)

+0

這應該沒有必要。 '''''是適當的語法。 – lurker