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

编译正常但调试时出现Segmentation Fault,求解决方法

问题解决:Segmentation Fault 调试问题

原代码

#include<stdio.h>
#include<cs50.h>
#include<ctype.h>
#include<string.h>

int main(int argc,string argv[])
{

    int len = strlen(argv[1]);

    if(argc != 2 )
    {
        printf("Usage:./substitution key\n");
        return 1;
    }

}

问题原因

  • 代码逻辑顺序错误:先执行strlen(argv[1]),再判断命令行参数数量argc是否为2。
  • 当未传入命令行参数时,argv[1]为NULL,strlen函数无法处理空指针,直接访问无效内存地址,触发Segmentation Fault。

修复方案

调整代码执行顺序,先校验命令行参数数量,确认argv[1]有效后再调用strlen:

#include<stdio.h>
#include<cs50.h>
#include<ctype.h>
#include<string.h>

int main(int argc,string argv[])
{
    if(argc != 2 )
    {
        printf("Usage:./substitution key\n");
        return 1;
    }

    int len = strlen(argv[1]);
    // 后续业务逻辑可在此继续编写
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:25:43