как вернуть результат из функции (1 либо 0)
зачем тебе ехит? делай ретурн
#include <stdio.h>
#include <search.h>
int cc(ENTRY e ,ENTRY *ep ,char *k, int num,int n){
int i;
int bool;
// for (i = 0; i < num; i++) {
e.key = k;//data[i];
ep = hsearch(e, FIND);
if (ep){bool=1;}
if (!ep){bool=0;}
printf("%9.9s -> %9.9s:%d\n", e.key,
ep ? ep->key : "NULL",
ep ? (intep->data) : 0);
// }
if(ep){return 0;}
if(!ep){return 1;}
e.key=k;
e.data = (char *)n;
ep = hsearch(e, ENTER);
if (ep == NULL) {
fprintf(stderr, "entry failed\n");
exit(1);
}
// return bool;
}
int main {
ENTRY e, *ep;
int ii=5; int n=1;
hcreate(ii);
if(cc(e,ep,"1 1",ii,n{printf("true\n");} else {printf("false\n");}
if(cc(e,ep,"2 2",ii,n{printf("true\n");} else {printf("false\n");}
if(cc(e,ep,"1 1",ii,n{printf("true\n");} else {printf("false\n");}
if(cc(e,ep,"2 2",ii,n{printf("true\n");} else {printf("false\n");}
return 0;
}
** Joe's Own Editor v3.0 ** Copyright (C) 2003 **
File test.c not changed so no update needed.
[observ contur]$ gcc test.c; ./a.out
1 1 -> NULL:0
true
2 2 -> NULL:0
true
1 1 -> NULL:0
true
2 2 -> NULL:0
true
[observ contur]$
Как это сделать можна?
if( cc(e,ep,"2 2",ii,n
{
printf ("return true, element 2 2 najden, ostanovka\n");
exit (1);
}
ELSE
{
printf ("return false, element 2 2 ne najden, prodolgaem poisk\n");
}
ну дак сделай ретурн после заполнения хэша, в чем проблема-то?
#include <stdio.h>
#include <search.h>
int cc(ENTRY e ,ENTRY *ep ,char *k, int num,int n){
int i;
int bool;
// for (i = 0; i < num; i++) {
e.key = k;//data[i];
ep = hsearch(e, FIND);
if (ep){bool=1;}
if (!ep){bool=0;}
printf("%9.9s -> %9.9s:%d\n", e.key,
ep ? ep->key : "NULL",
ep ? (intep->data) : 0);
// }
// if(ep){return 0;}
// if(!ep){return 1;}
e.key=k;
e.data = (char *)n;
ep = hsearch(e, ENTER);
if (ep == NULL) {
fprintf(stderr, "entry failed\n");
exit(1);
}
if(ep){return 1;}
if(!ep){return 0;}
// return bool;
}
int main {
ENTRY e, *ep;
int ii=5; int n=1;
hcreate(ii);
if(cc(e,ep,"1 1",ii,n{printf("true\n");} else {printf("false\n");}
if(cc(e,ep,"2 2",ii,n{printf("true\n");} else {printf("false\n");}
if(cc(e,ep,"1 1",ii,n{printf("true\n");} else {printf("false\n");}
if(cc(e,ep,"2 2",ii,n{printf("true\n");} else {printf("false\n");}
return 0;
}
File test.c saved
File test.c not changed so no update needed.
[observ contur]$ gcc test.c; ./a.out
1 1 -> NULL:0
true
2 2 -> NULL:0
true
1 1 -> 1 1:1
true
2 2 -> 2 2:1
true
[observ contur]$
по задумке вместо первых двух true должно быть false, потому што хеш еще не был заполнен необходимыми ключами. Ладно, пойду щас до дому. поэтому завтра зачитаю ответы. Спасиб заранее.
Дима
и в результате этого поиска результат ep будет уже результатом удачного или неудачного ввода данных, и предыдущий идет нах. Ой, я кажись либо придумал решение либо нихрена ваще не понимаю че делать...
Ладно. спасиб. кто отвечал. помогли походу тупому
p.s. эта штука так специально написана, чтобы ызываться из рекурсии.
Оставить комментарий
Barbie29
Нижеприведенная прога - заполняет хеш. Заполняет исправно.Но мне надо, чтобы в случае находки необходимого ключа функция возвращала либо 1 либо 0.
Т.е. можно ли в С вызвать функцию так, чтобы она находилась в условии. т.е. что-то типа этого
как это сделать попростому?
Спасибо за ответ!
p.s. это С под юникс.
p.s.s. С очень слабо знаю.