gpt4 book ai didi

c - 调用函数时出现段错误

转载 作者:行者123 更新时间:2023-11-30 18:35:09 25 4
gpt4 key购买 nike

我有一个递归函数,它从字典中创建所有可能的字符串并对它们进行加密,以便它们可以与一些保存的哈希值进行比较。

之前,我对密码的最大长度有一些预定义值,但我尝试使用 argv[1] 更改它。但是当我执行我的程序时,我收到一个没有解释的Segmentation Failure

顺便说一句,所有包含的内容都按其应有的方式存在,但我没有将它们放在帖子中,因为它有些错误。

int recur(char * mot , char * tab,int l,int max_l)
{

// Because this was an exercice we had to do in class , i deleted this part
// so some of my classmates dont copy/paste my code
// if you are interested , contact me

int main(int argc, char *argv[])
{
char letters[36] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'};
char s[10]="";
s[9]='\0';
int l=0;
int max_l;
sscanf (argv[1],"%d",&max_l);
printf("max_l : %i\n",max_l);
printf("Debut ! \n");
recur(s,letters,l,max_l);
}

感谢您的宝贵时间!

最佳答案

printf("Argv[1] :  %s\n", max_l);

这是未定义的行为。您给出了错误的格式说明符。这就是为什么当您尝试使用 %s 格式说明符打印 int 时出现段错误。它会查找 \0,然后就找不到了。因此它访问了一些不应该导致 UB 的内存。 (这导致了段错误)。

应该是

 printf("Argv[1] :  %d\n", max_l);

另一个主要问题是,并非该递归函数的每个控制流都返回 int。这是通向更大问题的途径。如果预期没有返回值,则行为将是未定义的。

关于c - 调用函数时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47788671/

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