Почему мой код выдает вывод как ошибку сегментации?
мой код компилируется, но показывает ошибку ошибки сегментации, почему?
Что я уже пробовал:
#include<stdio.h> int main() {int num[5],i,s,no; for(i=0;i<5;i++) { scanf("%d",&num[i]); } printf("enter a number\n"); scanf("%d",&no); s=search(no,&num[0]); printf("%d\n",s); search1(no,num); } int i=0; int search(int no,int *num[i]) {int x,i; for(i=0;i<5;i++) { if(no==*num[i]) return 1; } return 0; } int search1(int no,int *num) { int i,x,k; printf("your number %d is present in the list",no); printf("number\tfrequency"); for(i=0;i<5;i++) { for(x=0;x<i+1;x++) { k=0; if(num[i]==num[x] &&i!=x) {k=0; break;} else {k=1; continue;} } if(k==1) printf("%d",num[i]); } }
jeron1
for(i=0;i<5;i++) { for(x=0;x<i+1;x++) { k=0; if(num[i]==num[x] &&i!=x) <====
x = 5, а num [5] недопустим (допустимые индексы равны 0-4). Хотя могут быть и другие вещи
Member 13015247
x< 5 в то время, когда я=4. программа, которую я исправляю, есть проблема в *num, как вещь, но я не мог указать ошибку.
jeron1
Дох! Моя ошибка ... прости. Не могли бы вы установить точку останова и пройти через код?
jeron1
Как он компилируется? search1 должен возвращать int, но не делает этого.
Graeme_Grant
Это звучит как домашнее задание вопрос для меня. Вы знаете, что будете бороться за то, чтобы найти кого-то, кто сделает за вас домашнее задание.
Philippe Mori
- Почему поиск имеет массив указателей?
- А где ваши прототипы?
- Почему вы неправильно форматируете свой код?
- Вы уверены, что он компилируется без предупреждений?
- И использование другого имени для ваших переменных может помочь вам понять ваш код.