C无法识别Mac OSX上的双引号

时间:2014-02-19 18:35:36

标签: c macos char double-quotes

我最近被分配了为我的一个班级在C中创建一个程序decommenter的任务。虽然这是一个简短的小项目,但我遇到了一个令人头痛的问题。该程序100%正常工作,但它无法识别我的Mac计算机上的报价。但是,我的教授在他的Linux计算机上对它进行了测试,它没有任何问题。这是源代码:

#include <stdio.h>

#define IN 0
#define OUT 1
#define QUOTE 2

int main(int argc, char** argv) {
    int state = OUT;
    int reader;
    while ((reader=getchar()) != EOF) {
        if (state==OUT) {
            if (reader=='\"') {
                state = QUOTE;
            }
            if (reader=='/') {
                if ((reader=getchar()) == '*') { state = IN; continue; }
                else putchar('/');
            }
            if (reader!=EOF) putchar(reader);
        } else if (state==QUOTE) {
            if (reader=='\"') state = OUT;
            putchar(reader);
        } else {
            if (reader=='*') {
                if ((reader=getchar()) == '/') state = OUT;
            }
        }
    }
    return 0;
}

当我输入以下输入时(通过终端中的shell重定向):

  

/ *这是一个测试* /这仍然是一个测试“/ *仍在测试* /”

     

/ *“更多测试”* /

我得到以下输出:

  

这仍然是一个测试“”

而不是:

  

这仍然是一个测试“/ *仍在测试* /”

我尝试使用相同的输入测试以下代码,但它没有打印任何内容:

int reader;
while ((reader=getchar()) != EOF) {
    if (reader=='\"') printf("true")
}

我完全被这个目瞪口呆,但也许这里有人知道解决方案?

2 个答案:

答案 0 :(得分:3)

您键入的引号已替换为引号。当您在终端中键入引号时不应该发生这种情况,因此我猜您使用某些文本编辑器创建了一个文本文件,然后将该文本文件提供给您的程序。如果是这样,那么只需编辑您的文本文件,在系统偏好设置 - &gt;中禁用“智能引号”。键盘 - &gt;文字,用直引号替换你的引号,然后再试一次......

答案 1 :(得分:1)

嗯,你正在为你的程序提供LEFT DOUBLE QUOTATION MARK(“)和右双引号(”)而不是引号(“)。