Rozpoznawanie typów w funkcji wypisującej ich wartości

0

Witam ,
Mam stworzyć funkcję w "czystym" C , która będzie wypisywała wartości podstawowych typów ( int , float i char* ) . Funkcja ta ma sama "rozpoznać" typ . Kompletnie nie znam się na tym języku , nie wiem jaki umieścić parametr funkcji ( rozmyślałem nad void*) i jak wewnątrz tej funkcji rozpoznać co jest intem a co charem. Byłbym wdzięczny za jakiekolwiek porady.
Pozdrawiam

0

Prawdopodobnie źle zrozumiałeś zadanie.
Jeżeli masz wskaźnik typu void* to nie ma żadnej możliwości rozpoznania na co on tak naprawdę wskazuje.
Może chodziło o coś takiego:

#include <stdio.h>

typedef enum _KIND { dkInt,dkFloat,dkString } KIND;
typedef struct _VAR { KIND kind; union { int i; float f; char *s; }; } VAR;
VAR convert(const char *str)
  {
   VAR tmp; 
   tmp.kind=dkString; // oczywiście to trzeba zbadać najpierw
   tmp.s=strdup(str);
   return tmp;
  }

int main(void)
  {
   VAR data;
   data=convert("Ala ma kota");
   switch(data.kind)
     {
      case dkInt: printf("%d\n",data.i);
      case dkFloat: printf("%f\n",data.f);
      case dkString: printf("%s\n",data.s);
     }
   if(data.kind==dkString) free(data.s);
   return 0;
  }
0

Dzięki za odpowiedź . Nie do końca rozumiem program przesłany przez użytkownika _13th_Dragon , a mianowicie " tmp.kind=dkString;" -dlaczego na "sztywno" przypisujemy to do chara , i co z np. intem skoro funkcja convert przyjmuje jako parametr tylko chara*. No ale mniejsza z tym , przesłany kod pomógł mi , mam pewien pomysł na funkcje z wykorzystaniem "union" . Co do działalności tej funkcji ... Tworzymy zmienne różnych typów i powiedzmy , że "przypisujemy" je do struktury . Mam zdefiniować funkcje wypisz , która uzyskując jako parametr , czy to inta czy jakiś wskaźnik ma wypisać na ekran wartość danej zmiennej . Coś w stylu szablonu jaki można napisać w c++ .

0

-dlaczego na "sztywno"
A komentarz do tego wiersza przeczytałeś?
Jeżeli ten wskaźnik to jedyny parametr tej funkcji to się nie da tego zrobić.
Przypominam w C nie ma przeciążenia funkcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1