gpt4 book ai didi

c - 段错误(核心已转储)- C 参数

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:55 24 4
gpt4 key购买 nike

每次我按以下方式运行下面的程序时:./a.out -a -b 它运行正常。但是如果选择运行 ./a.out -a,我会导致段错误(核心已转储)。有什么办法可以解决这个问题吗?

int main(int argc, char *argv[])
{
if (argc > 1)
{
if (strcmp(argv[1],"-a") == 0)
{...
if (strcmp(argv[2],"-b") == 0)
{...}
}
}
}

最佳答案

当你用 ./a.out -a 运行它时,只有一个参数,那么你不应该做检查 strcmp(argv[2],"-b"),因为没有第三个参数,读取 argv[2] 会导致未定义的行为。


您可以通过在执行 strcmp(argv[2],"-b") 之前添加额外的检查来修复它。

int main(int argc, char *argv[])
{
if (argc > 1)
{
if (strcmp(argv[1],"-a") == 0)
{...
if (argc > 2 && strcmp(argv[2],"-b") == 0)
{...}
}
}
}

这看起来很丑陋,但它可以工作。


关于c - 段错误(核心已转储)- C 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com