0

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

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 终端中使用空格?

4

3 回答 3

4

是的,你只需要逃避它。在您的情况下,程序将“上升”视为两个参数。

试试这个:

./try go\ up
于 2012-08-21T21:01:15.590 回答
3

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

尝试引用空格:

./try 'go up'

旁注:您应该argc在使用argv.

于 2012-08-21T21:01:20.690 回答
2

可以从 Linux 终端使用空白。

尝试以下操作:

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

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

argv标准外壳会根据空格自动将行拆分为数组。引号告诉解析器将文本视为单个字符串,从而允许访问诸如“程序文件”之类的目录。反斜杠转义空格,告诉解析器将其视为特殊字符,而不是用于分割行的空格。

于 2012-08-21T21:07:59.087 回答