分段错误和argv,argc
segmentation fault and argv, argc
我编写了一个打印输入的代码:
int main(int argc, char *argv[])
{
printf("%c", *argv[1]);
return 0;
}
当我输入 ab
、abcdef
、ac
、*cf
时效果很好,但是当我输入 **
或 $$
是 returns 2,当我输入 $a
、$k
等时,它会产生分段错误。我想知道为什么它不打印出我输入的字母。
假设您是 运行 Linux 或其他类型的 UNIX 风格,$a
指的是环境变量 a。这是由您的 shell 扩展的,并且由于您没有将其设置为值,因此它变为空。
要获取文字字符串 $a
,您必须转义您的参数 - 根据您使用的 shell,您可以尝试使用单引号或双引号或转义 $
带反斜杠 \
.
我假设你使用 Linux/Unix/MacOs。而不是 运行 你的程序尝试 echo $$ 或 echo $1。这些系统变量被扩展为其他字符串(或根本不扩展)。因此,当存在 none.
时,您将得到扩展文本或分段错误
我编写了一个打印输入的代码:
int main(int argc, char *argv[])
{
printf("%c", *argv[1]);
return 0;
}
当我输入 ab
、abcdef
、ac
、*cf
时效果很好,但是当我输入 **
或 $$
是 returns 2,当我输入 $a
、$k
等时,它会产生分段错误。我想知道为什么它不打印出我输入的字母。
假设您是 运行 Linux 或其他类型的 UNIX 风格,$a
指的是环境变量 a。这是由您的 shell 扩展的,并且由于您没有将其设置为值,因此它变为空。
要获取文字字符串 $a
,您必须转义您的参数 - 根据您使用的 shell,您可以尝试使用单引号或双引号或转义 $
带反斜杠 \
.
我假设你使用 Linux/Unix/MacOs。而不是 运行 你的程序尝试 echo $$ 或 echo $1。这些系统变量被扩展为其他字符串(或根本不扩展)。因此,当存在 none.
时,您将得到扩展文本或分段错误