【发布时间】:2021-11-14 18:26:18
【问题描述】:
该程序应该将两个整数相乘并打印相乘的结果。 如果程序没有收到 2 个参数,它应该打印 Error 并返回 1。
我用
编译它当我用 <. int> 或 <. int> 运行它时,它会输出正确的结果,但是当我只用 <.> 运行它时,它会说 分段错误 我希望它会输出错误。 我的代码如下。提前致谢
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
int x = atoi(argv[1]);
int y = atoi(argv[2]);
if (argc == 3)
{
printf("%d\n", x * y);
}
else
{
printf("Error\n");
return 1;
}
return 0;
}
【问题讨论】:
-
if (argc == 3)在访问argv值之前检查,就像上面两行所做的那样。 -
int x = atoi(argv[1]); 和 int y = atoi(argv[2]); 缺少分号 ;
-
**argv或*argv[]是获取主函数参数的正确方法。 -
将警告级别提高到最大,并更正您的代码,直到没有警告为止。
-
段错误?它甚至无法编译 4 个警告和 2 个错误 (MSVC)。请复制/粘贴确切的代码。
标签: c segmentation-fault return