You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行C语言整数乘法程序参数不足时报Segmentation fault问题求助

问题排查与修复方案

存在的问题

  • main函数参数定义错误:第二个参数应该是字符串数组char *argv[](或等价的char **argv),你当前定义的char *argv是单个字符指针,类型不匹配会导致数组访问逻辑完全错误。
  • 执行顺序错误:你在判断参数数量argc == 3之前,就已经尝试访问argv[1]、argv[2]并执行atoi转换。当仅运行./mul时argc=1,argv[1]属于越界访问非法内存,直接触发段错误,根本不会执行到后面的参数判断逻辑。
  • 语法错误:两行atoi转换语句末尾缺少分号,会导致编译失败,属于代码粘贴遗漏或编写疏忽。

修复方法

调整执行顺序,先判断参数数量是否符合要求,参数合法的前提下再做整数转换和乘法计算,同时修正argv的参数定义、补全语句分号。

修正后的完整代码如下:

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
    if (argc != 3)
    { 
        printf("Error\n");
        return 1;
    }
    int x = atoi(argv[1]);
    int y = atoi(argv[2]);
    printf("%d\n", x * y);
    return 0;
}

内容的提问来源于stack exchange,提问作者Sangwani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:42:02