【发布时间】:2015-04-29 16:08:16
【问题描述】:
我编写了一个打印输入的代码:
int main(int argc, char *argv[])
{
printf("%c", *argv[1]);
return 0;
}
当我输入ab、abcdef、ac、*cf 时,它运行良好,但是当我输入 ** 或 $$ 时它返回 2,当我输入 $a 时, $k 等等,会产生分段错误。我想知道为什么它不打印出我输入的字母。
【问题讨论】:
-
*和$甚至在您的程序被调用之前就由 shell 处理。您可能会考虑将 RTFM 用于sh、ksh、csh、bash、dash或您正在使用的任何 shell。 -
也打印
argc,然后检查打印argv[1]是否合法。 -
"当我输入 '*' 或 '$$'"* 你如何"put"?如果它是真正的命令行,也许你应该尝试看看
'**'或'$$'是什么意思。例如尝试echo **或echo $$ -
在调试器中运行,当崩溃发生时看看
argc和argv[1]的值是什么。 -
尝试将这些参数用双引号括起来
标签: c segmentation-fault command-line-arguments