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