brad@bradley.UUCP (01/31/85)
I can't seem to get the hang of this one. Anyone got anyideas on
how to do it. below is the code I thought would work but it doesn't.
Basically what I want to do is to be able to insert the function into
the structure and have it call that function.
Bradley Smith UUCP: {cepu,ihnp4,noao,uiucdcs}!bradley!brad
Text Processing ARPA: cepu!bradley!brad@UCLA-LOCUS
Bradley University PH: (309) 676-7611 Ext. 446
Peoria, IL 61625
------------------------cut here------------------------
#include <stdio.h>
struct mesg {
char *m_str;
int (*funcp)();
};
int f1();
int f2();
struct mesg mesg[] = {
{"This is message 1", f1 },
{"This is message 2", f2 },
};
main()
{
char gt[5];
while(gets(gt) != NULL) {
switch(gt[0]) {
case '1':
mesg[0].(*funcp)();
break;
case '2':
mesg[1].(*funcp)();
break;
}
}
}
f1()
{
printf("%s\n", mesg[0].m_str);
printf("f1\n");
}
f2()
{
printf("%s\n", mesg[1].m_str);
printf("f1\n");
}brad@bradley.UUCP (01/31/85)
I found it here it is if you want.
#include <stdio.h>
struct mesg {
char *m_str;
int (*funcp)();
};
int f1();
int f2();
struct mesg mesg[] = {
{"This is message 1", f1 },
{"This is message 2", f2 },
};
main()
{
char gt[5];
while(gets(gt) != NULL) {
switch(gt[0]) {
case '1':
(*mesg[0].funcp)(1);
break;
case '2':
(*mesg[1].funcp)(2);
break;
}
}
}
f1(i)
int i;
{
printf("%s\n", mesg[i-1].m_str);
printf("%d\n",i);
}
f2(i)
int i;
{
printf("%s\n", mesg[i-1].m_str);
printf("%d\n",i);
}friesen@psivax.UUCP (Stanley Friesen) (02/04/85)
In article <9300002@bradley.UUCP> brad@bradley.UUCP writes: >I can't seem to get the hang of this one. Anyone got anyideas on >how to do it. below is the code I thought would work but it doesn't. > >Basically what I want to do is to be able to insert the function into >the structure and have it call that function. > > >------------------------cut here------------------------ > switch(gt[0]) { > case '1': > mesg[0].(*funcp)(); > break; > case '2': > mesg[1].(*funcp)(); > break; > } Here's your problem, this should be: switch(gt[0]) { case '1': (*mesg[0].funcp)(); break; case '2': (*mesg[1].funcp)(); break; } -- Sarima (Stanley Friesen) {trwrb|allegra|cbosgd|hplabs|ihnp4|aero!uscvax!akgua}!sdcrdcf!psivax!friesen or quad1!psivax!friesen
dre@ptsfa.UUCP (Doug East) (02/06/85)
> while(gets(gt) != NULL) { > switch(gt[0]) { > case '1': > (*mesg[0].funcp)(1); > break; > case '2': > (*mesg[1].funcp)(2); > break; > } > } > } Actually, this works quite well also: . . . while(gets(gt) != NULL) { switch(gt[0]) { case '1': mesg[0].funcp(1); /* (*...) absent */ break; case '2': mesg[1].funcp(2); /* (*...) absent */ break; } } . . . -- ------------------------------------------------------------------------------ Doug East (Pacific*Bell -- San Francisco) {ihnp4,ucbvax,cbosgd,decwrl,amd70,fortune,zehntel}!dual!ptsfa!dre