PDA

Visualizza la versione completa : [C] Corrispondenze negli Array


Baly23
18-07-2007, 12:29
ciao ragazzi, ecco il mio quesito:

In php io scrivo:
$lang = array ( 'italiano' => 'ITA', 'inglese' => 'EN');

in modo che se io cheido
echo $lang['italiano'] mi spunti ITA

se voglio fare la stessa cosa in C, che devo scrivere?

menphisx
18-07-2007, 12:43
Non esiste qualcosa di nativo in C.
Puoi crearti delle liste concatenateo un'array di strutture, ma se vuoi usare quella sintassi devi crearti un parser.

oregon
18-07-2007, 12:43
Qualcosa del genere



enum _lan
{
ITALIANO, INGLESE
};

char *lang[] = { "ITA", "EN" };

void main()
{
printf("%s\n", lang[ITALIANO]);
printf("%s\n", lang[INGLESE]);
}

Baly23
18-07-2007, 12:57
Originariamente inviato da oregon
Qualcosa del genere



enum _lan
{
ITALIANO, INGLESE
};

char *lang[] = { "ITA", "EN" };

void main()
{
printf("%s\n", lang[ITALIANO]);
printf("%s\n", lang[INGLESE]);
}


grazie... posso provare... c'Ŕ qualche altra possibilitÓ? magari che mi permette di averli accanto sulla stessa riga, in modo da avere tutto a vista d'occhio?

menphisx
18-07-2007, 13:00
struct _Assoc{
char *key;
char *value;
}lang[] = {
{ "italiano", "ITA" },
{ "inglese", "EN" }
};

menphisx
18-07-2007, 13:02
Originariamente inviato da Baly23
grazie... posso provare... c'Ŕ qualche altra possibilitÓ? magari che mi permette di averli accanto sulla stessa riga, in modo da avere tutto a vista d'occhio?

printf("%s %s\n", lang[ITALIANO], lang[INGLESE]);

andbin
18-07-2007, 13:02
Originariamente inviato da Baly23
c'Ŕ qualche altra possibilitÓ? magari che mi permette di averli accanto sulla stessa riga, in modo da avere tutto a vista d'occhio? No, a meno di usare librerie apposite o farti tu delle strutture dati "associative".
Quello che ha mostrato oregon Ŕ semplicemente un accesso per indice un po' "mascherato". A te serve una struttura dati in cui la chiave possa essere una stringa. E come ti Ŕ giÓ stato detto, non esiste nulla di "nativo" del genere in C.

Baly23
18-07-2007, 15:17
Originariamente inviato da menphisx



struct _Assoc{
char *key;
char *value;
}lang[] = {
{ "italiano", "ITA" },
{ "inglese", "EN" }
};



ti ringrazio tantissimo, avevo provato con questo, ma poi avevo alcuni problemi nel caso del print visto che c'erano spazi ecc...

allora ho usato qualcosa di + semplice...


char *NewGame, *Options, *Credits, *Quit;

int LanguageID = 0;

void Lang()
{
if(LanguageID == 0) // Italian
{
NewGame = "Nuovo Gioco";
Options = "Opzioni";
Credits = "Ringraziamenti";
Quit = "Esci";
}
if(LanguageID == 1) // English
{
NewGame = "New Game";
Options = "Options";
Credits = "Credits";
Quit = "Quit";
}
}


grazie comunque ;)

Loading