分段故障和argv,argc

时间:2015-04-29 08:01:12

标签: c segmentation-fault command-line-arguments

我制作了一个打印出输入的代码:

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

当我添加ababcdefac*cf之类的内容时,效果很好,但是当我放置**或{{1}时它返回2,当我放$$$a等时,它会生成分段错误。我想知道为什么它没有打印出我写的字母。

2 个答案:

答案 0 :(得分:3)

假设您正在运行Linux或其他一些UNIX风格,ExecutorService ex = Executors.newSingleThreadExecutor(); for(final String link : links) { System.err.println("-- "+i+" --"); //DEBUG ex.execute(new Runnable(){ @Override public void run(){ try { Analyzer.process(link); } catch( Exception e ) { e.printStackTrace(); } } }); i++; //DEBUG } ex.shutdown(); 引用环境变量a。这是由您的shell扩展的,因为您没有将其设置为值,所以它变为空。

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

答案 1 :(得分:2)

我假设你使用Linux / Unix / MacOs。而不是运行您的程序尝试echo $$或echo $ 1。这些系统变量被扩展为其他字符串(或根本不扩展)。因此,当没有扩展文本或分段错误时,您将获得它。