gpt4 book ai didi

C程序-段错误,原因

转载 作者:行者123 更新时间:2023-11-30 15:53:16 25 4
gpt4 key购买 nike

当我输入 6 (int) 作为值时,运行此命令会出现段错误 (gcc filename.c -lm)。请帮助我解决这个问题。预期的功能尚未实现,但我需要知道为什么我已经陷入段错误。

谢谢!

#include<stdio.h>
#include<math.h>
int main (void)
{
int l = 5;
int n, i, tmp, index;
char * s[] = {"Sheldon", "Leonard", "Penny", "Raj", "Howard"};
scanf("%d", &n);

//Solve Sigma(Ai*2^(i-1)) = (n - k)/l

if (n/l <= 1)
printf("%s\n", s[n-1]);
else
{
tmp = n;
for (i = 1;;)
{
tmp = tmp - (l * pow(2,i-1));
if (tmp <= 5)
{
// printf("Breaking\n");
break;
}
++i;
}
printf("Last index = %d\n", i); // ***NOTE***

//Value lies in next array, therefore
++i;

index = tmp + pow(2, n-1);
printf("%d\n", index);

}
return 0;
}

最佳答案

当您为 ns[n-1] 输入 6 时,您正在执行越界访问:

printf("%s\n", s[n-1]); 

因为数组里只有5个指针。所以只有 0-4 是有效索引。

关于C程序-段错误,原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776802/

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