gpt4 book ai didi

c - 由于指针导致的 C 中的段错误

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

我最近开始使用 C 编写代码,并且正在为 Euler 项目做一些事情。到目前为止,这是我挑战三的代码。唯一的问题是当我运行编译后的代码时它会抛出一个段错误。我认为这可能是由于我调用了一个指针,可疑指针在我的评论下方。我对该主题进行了一些研究,但似乎无法修复该错误。有什么建议吗?

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

bool is_prime(int k);
int * factors(int num);

int main(){
int input;
while (true){
printf("Enter a number to get the prime factorization of: ");
scanf("%d", &input);
if (is_prime(input) == true){
printf("That number is already prime!");

}else{
break;
}
}

//This is the pointer I think is causing the problem
int * var = factors(input);
int k;
for (k = 0; k < 12; k++){
printf("%d", var[k]);
}
}

bool is_prime(int k){
int i;
double half = ceil(k / 2);
for (i = 2; i <= half; i++){
if (((int)(k) % i) == 0){
return false;
break;
}
}
return true;
}

int * factors(int num){
int xi;
static int array[1000];
int increment = 0;
for (xi = 1;xi < ceil(num / 2); xi++){
if (num % xi == 0){
array[increment] = xi;
increment++;
}
}
}

最佳答案

factors 函数没有返回语句。它应该返回一个指针,但它没有返回任何东西。

旁注:启用编译器的警告(例如,使用 gcc -Wall -Wextra)。如果它们已经启用,请不要忽略它们!

关于c - 由于指针导致的 C 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490033/

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