Hej
Powiedzmy, że mam taką funkcję (zwracającą 0 w przypadku sukcesu i 1 w przeciwnym wypadku).
int read_complex(void *a, void *b)
{
if( a == NULL || b == NULL )
{
return 1;
}
float re1,im1;
char znak_operatora;
char znak_i;
if(scanf("%f%c%c%f",&re1,&znak_operatora,&znak_i,&im1)!=4)
{
return 1;
}
if( im1 < 0)
{
return 1;
}
switch(znak_operatora)
{
case '-':
im1 *= -1;
break;
case '+':
break;
default:
return 1;
}
switch(znak_i)
{
case 'i':
break;
default:
return 1;
}
float re2,im2;
if(scanf(" %f%c%c%f",&re2,&znak_operatora,&znak_i,&im2)!=4)
{
return 1;
}
if( im2 < 0)
{
return 1;
}
switch(znak_operatora)
{
case '-':
im2 *= -1;
break;
case '+':
break;
default:
return 1;
}
switch(znak_i)
{
case 'i':
break;
default:
return 1;
}
return 0;
}
Ma ona za zadanie wprowadzić dwie liczby zespolone. Kod jest prawie gotowy dla tej funkcji oprócz jednej rzeczy. Zadanie, dla którego go rozpisuję wymaga, aby w ramach ujednolicenia zrobić parametry dla funkcji typu void *. Oczywiście to a i b w samym main to będą odpowiednio wskaźniki na dwie struktury tego samego typu. Pojawia się jednak pytanie jak mogę ot choćby w scanf-ach zamienić &re1 i &im1 tak, by odpowiednio wskazywać na &(a->re) i &(a->im)?