gpt4 book ai didi

c - 在 C 中使用数组时出现 "Error Segmentation fault (core dumped)"

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

我有这段代码,它工作得很好除非我输入的是数字“2”

我不知道为什么,代码似乎没问题......有什么问题吗?

void initValue(int *a, int dim, int value, int i);
int findValue(int *a, int dim, int value, int i);

main(){
int i, value, dim = 5;
int a[dim];

initValue(a, dim, value, i);

printf("\nYour values are: ");
for(i = 0; i < dim; i++) printf("%d ", a[i]);
printf("\n\n");
}

void initValue(int *a, int dim, int value, int i){
printf("Insert your values:\n");

for(i = 0; i < dim; i++){
scanf("%d", &value);
if(findValue(a, dim, value, i) == 1){
printf("This value already exist, please insert a new one.\n");
i--;
}
else a[i] = value;
}
}

int findValue(int *a, int dim, int value, int i){
int j, result = 0;
for(j = 0; j < i || a[j] != value; j++) if(a[j] == value) result = 1;

return result;
}

最佳答案

你代码中的错误是这一行的逻辑错误:

for(j = 0; j < i || a[j] != value; j++) if(a[j] == value) result = 1;

假设你有 dim=5i=2value=10,这不是 a。循环不会在 j=2 处停止,因为 a[j] != value 为真。之后您将进入未定义的行为领域。

该行需要更改为:

for(j = 0; j < i ; j++) if(a[j] == value) return 1;

函数现在可以简化为:

int findValue(int *a, int dim, int value, int i){
int j = 0;
for(j = 0; j < i ; j++)
{
if(a[j] == value)
{
result = 1;
}
}
return 0;
}

关于c - 在 C 中使用数组时出现 "Error Segmentation fault (core dumped)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441286/

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