字符串比较的空白问题

时间:2012-08-21 20:59:01

标签: c linux

我写了一个比较字符串的简单应用程序。我的问题是白色空间。这是示例代码:

int main(int argc,char *argv[]) {  

    if(strcmp(argv[1], "go up")==0){
        printf("up up and away\n");
    } 

    if(strcmp(argv[1], "down")==0){
        printf("down you go\n");
    }
    return 0;
}

现在用gcc -o try try.c编译后,我在终端中运行它:

./try go up  // doesn't show anything
./try down //prints down you go

是否可以在Linux终端中使用空格?

3 个答案:

答案 0 :(得分:4)

是的,你只需逃避它。在你的情况下,程序会看到"上升"作为两个论点。

试试这个:

./try go\ up

答案 1 :(得分:3)

  

是否可以在linux终端中使用空格?

尝试引用空格:

./try 'go up'

附注:在使用argc中的任何内容之前,您应该先检查argv

答案 2 :(得分:2)

可以使用Linux终端的空白区域。

尝试以下方法:

./try "go up"
./try go\ up

对于这两种情况,系统都应该按照您的预期进行响应。

标准shell会根据空白区域自动将行拆分为argv数组。引号告诉解析器将文本视为单个字符串,允许访问“Program Files”之类的目录。反斜杠会占用空间,告诉解析器将其视为特殊字符,而不是用于分割行的空格。