【问题标题】:Commenting out Printf Cause Segmentation Fault注释掉 Printf 导致分段错误
【发布时间】:2014-10-02 10:21:39
【问题描述】:

一段时间以来,由于我收集到的一些关于此的信息,人们说我的堆栈在某处或以某种方式损坏了,因此我一直被注释掉会导致分段错误的语句卡住了一段时间。

http://pastebin.com/NT8PGPi0

导致分段错误行号 511 的代码(对不起,当我从编辑器中复制出来时 linux 不喜欢的所有换行符)

基本上对于这个项目,它应该能够使用用户选择的不同选项将 .txt 打印到屏幕上

./a.out --delete=c // 删除文件中的所有 c 并将其定位到控制台 ./a.out --line-numbers // 在控制台中发布所有行号

多头期权以此类推,空头期权也是如此。

【问题讨论】:

  • 编译所有警告和调试信息 (gcc -Wall -g) 然后使用调试器 (gdb) 和valgrind。您可能有内存损坏或一些未定义的行为。不要指望我们做你的功课。阅读toupper(3)
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example.。

标签: linux segmentation-fault


【解决方案1】:

如前所述,在这种情况下,最好的选择始终是通过 gdb 或其他调试器调试代码。但作为一个小提示。在 Opt_Args 函数中看这个:

    *c = getc(fp);

然后看一下getc的手册:

  int getc(FILE *stream);

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 2017-05-19
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2019-04-04
    • 2013-05-28
    相关资源
    最近更新 更多