【发布时间】:2021-07-12 13:32:53
【问题描述】:
这是一个更大文件的一部分,但这是唯一有问题的函数。这就是问题所在,如果我在未优化的 gcc 中编译它,我将得到我想要的一切而不会出现问题。但是,如果我尝试将其编译为 gcc -c -pg -02 main.c, 我收到以下错误消息
【问题讨论】:
-
给你一个好建议:在使用
line之前检查fgets的返回值,以防函数出错。 -
检查任何函数的返回值的方法相同。阅读手册页以查看它在错误时返回的值,然后使用
if条件检查它:if (fgets(line,MAX_LINE ,stdin) == NULL) { /* do error handling */ } -
这是一个警告,而不是错误。和一个很好的。 总是在尝试使用读取的值之前检查输入函数是否成功。
-
没看到什么?在您添加错误检查以使用 fgets 的返回值后,我很难相信编译器仍然会发出该警告。如果您声称它仍在发生,请发布该代码的确切更新代码和确切警告。
-
您应该还将错误检查添加到转换函数,如
strtol()。如果你读到的不是整数怎么办?或者在一些前导数字之后还有其他东西?