gpt4 book ai didi

c - 为什么我在 CS50 Pset 中总是出现段错误?

转载 作者:行者123 更新时间:2023-11-30 19:42:50 27 4
gpt4 key购买 nike

我目前正在尝试CS50的Pset2,在caesar.c中,用户应该通过argv输入k;如果他不这样做,我就应该“大喊大叫”用户告诉他使用命令行参数。但如果我尝试以下操作,我总是会遇到段错误。

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

int main(int argc, const string argv[])
{
unsigned int k = atoi(argv[1]);

if(k == NULL)
{
printf("YOU DID NOT INPUT ANYTHING AS COMMAND LINE ARGUMENT! ");
return 1;
}

return 0;
}

最佳答案

当你这样做时

unsigned int k = atoi(argv[1]);

argv[1] 可能为 NULL。您应该在调用 atoi 之前检查它,因为将 NULL 传递给 atoi 会导致未定义的行为。改变

if(k == NULL)
{
printf("YOU DID NOT INPUT ANYTHING AS COMMAND LINE ARGUMENT! ");
return 1;
}

if(argv[1] == NULL)
{
printf("YOU DID NOT INPUT ANYTHING AS COMMAND LINE ARGUMENT! ");
return 1;
}

if(argc < 2)
{
printf("YOU DID NOT INPUT ANYTHING AS COMMAND LINE ARGUMENT! ");
return 1;
}

并将其移到前面

unsigned int k = atoi(argv[1]);

关于c - 为什么我在 CS50 Pset 中总是出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546652/

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