分段错误和argv,argc

segmentation fault and argv, argc

我编写了一个打印输入的代码:

  int main(int argc, char *argv[])
{
    printf("%c", *argv[1]);
    return 0;
}

当我输入 ababcdefac*cf 时效果很好,但是当我输入 **$$ 是 returns 2,当我输入 $a$k 等时,它会产生分段错误。我想知道为什么它不打印出我输入的字母。

假设您是 运行 Linux 或其他类型的 UNIX 风格,$a 指的是环境变量 a。这是由您的 shell 扩展的,并且由于您没有将其设置为值,因此它变为空。

要获取文字字符串 $a,您必须转义您的参数 - 根据您使用的 shell,您可以尝试使用单引号或双引号或转义 $ 带反斜杠 \.

我假设你使用 Linux/Unix/MacOs。而不是 运行 你的程序尝试 echo $$ 或 echo $1。这些系统变量被扩展为其他字符串(或根本不扩展)。因此,当存在 none.

时,您将得到扩展文本或分段错误