在if语句中无法捕获撇号

时间:2013-10-07 17:03:58

标签: c if-statement apostrophe

我正在创建一个带有文本文件和单词的程序。它读取文本文件并将该字与正在读取的当前字进行比较。我建立它的方式是忽略“s”。例如,如果我正在搜索“NASA”并且我遇到了“NASA”这个词,那么它只会将其视为“NASA”。不幸的是,我不能通过使用“if(ch ==''\')”,“ch”作为当前字符来捕获撇号。我的理由可能是因为文本文件中的撇号看起来像这样'。我不知道如何适应这一点。

这就是我要捕捉撇号的原因:

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

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

                }

请注意,它是更大程序的一部分,我不允许向您展示。这解释了“其他如果”的开头。

感谢。

3 个答案:

答案 0 :(得分:2)

如果你的撇号看起来像''',那么你应该只检查'''字符,它不会为你做那个。这是一个不同的字符 - 看起来像扩展的ASCII字符146(十进制),“右单引号”。该文本可能来自MS Office - 它喜欢将单引号和双引号转换为单引号和双引号所谓的“智能”引号(如果你在Office之外的任何文本做任何事情,那么除了。)有人指出,“左单引号”,ascii字符145,是同一组的另一半,所以你的文本中也可能有一些。即:

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

答案 1 :(得分:1)

对于宽字符wchar_t,请添加L


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

答案 2 :(得分:0)

您可以使用ascii数字作为撇号,而不是使用转义字符,即39:     否则如果(ch == 39)