PDA

View Full Version : [C] CONVERTIRE STRINGA


trunks81
14-03-2005, 18:55
Salve a tutti!

Ho la seguente struttura:

typedef struct {
char nome[LNOME+1];
char cognome[LCOGN+1];
char citta[LCITT+1];
char telefono[LTELE+1];
char commento[LCOMM+1];
} voce;

e devo realizzare una funzione "voce* prova(char r[])", la quale deve convertire una stringa di caratteri (r), che rappresenta una voce della rubrica telefonica secondo il formato:
COGNOME
NOME
CITTA'
TELEFONO
COMMENTO
In cui tutte le righe hanno lunghezza fissa a 140 caratteri.

Mi si chiede anche che la funzione allochi la struttura e ritorni il
puntatore alla struttura allocata se tutto e' andato bene e NULL altrimenti.

In poche parole non saprei fare niente, sono onesto.
Come faccio a prendere i vari campi e memorizzarli nei corrispettivi campi della struttura???
VI CHIEDO IL FAVORE DI AIUTARMI, GRAZIE!!!

DanieleC88
14-03-2005, 19:33
Riservati la memoria con:
nuovavoce = (voce *) malloc(memoriachetiserve);
Se dopo questo "nuovavoce" corrisponde a NULL, malloc non è riuscita a riservare la memoria richiesta.

Per le altre, basterà fare:
strncpy(nuovavoce->nome, stringadacuicopiare, 140);
strncpy(nuovavoce->cognome, (stringadacuicopiare+140), 140);
strncpy(nuovavoce->citta, (stringadacuicopiare+280), 140);
etc. etc. etc.

pavimento
14-03-2005, 19:40
A cosa servono il +140 e +280?

DanieleC88
14-03-2005, 19:52
Servono a spostarsi all'interno della memoria puntata da "stringadacuicopiare" (che è un char *, quindi pur sempre un puntatore) e quindi a saltare le stringhe già lette (che da quanto detto sono grandi 140 byte).

A proposito, trunks81: nella dichiarazione di "prova" ci va "char *" e non "char []", altrimenti il compilatore potrebbe darti rogne.