做 ';'以某种方式终止您作为命令行参数传递的字符串?

Does ';' somehow terminates a string that you pass as a command line argument?

我正在制作一个从命令行获取文本输入的程序。

基本上它将每个命令行参数都作为一个字符串,每个字符串代表“文本”中的一个词,我想打印从命令行传递的“文本”(没有我的名字输出)到屏幕。

但如果我的命令行参数之一是一个字符串,例如 'Hello;' 或 'And)' ,带有 ';'或末尾的 ')' - 如您所见 - 然后它不会打印 ';'或 ')' 等

在我看来,它甚至没有将这些符号识别为传入字符串的一部分。

我什至试图打印';'符号在一个简单的 'Hello;' 示例中只是为了看看它会做什么(具体来说,我写了一些代码来只打印每个字符串参数的最后一个字符)。

#include<stdio.h>
#include<string.h>

int main(int argc , char *argv[]){
int i;
    for(i=1 ; i < argc ; i++){
        char p = *(argv[i] + strlen(argv[i]) - 1);
         printf("%c " , p);
    }
printf("\n");
return 0;
}

当我 运行 来自命令行的代码如下:

./a.out 你好;
它打印
o
而不是
;

我试过打印 ' ; ' 就其本身而言,它什么也不打印,而我在这些 ' 之后的下一个字符串中得到一个错误; ' , ' ) ' 找不到错误命令等符号。

如果有人知道为什么会这样,或者我怎样才能让这个程序打印出 ';'符号等请帮助我,我是 C 语言和通用编程的新手。

; 字符由 shell 特殊解释。用于分隔同一行的多个命令。

所以你要么需要引用字符串:

./a.out "Hello;"

或者转义 ;:

./a.out Hello\;