Ciao a tutti, torno a scrivervi per un problema che ho avuto in fase di compilazione. Devo copiare degli array di char in un'unica stringa, questo è il codice che ho usato anche in altre funzioni, e che non mi genera errori:
Ora vi posto l'output del compilatore:codice:typedef struct autore { /** cognome/i (almeno uno deve essere presente) */ char cognome[LCOGN +1]; /** nome/i (almeno uno deve essere presente) */ char nome [LNOME + 1]; /** puntatore al prossimo autore */ struct autore * next; } autore_t; typedef struct scheda { /** puntatore lista degli autori */ autore_t* autore; /** titolo */ char titolo[LLSTRING +1]; } scheda_t; //FRAMMENTO DI FUNZIONE INCRIMINATA //devo restituire un puntatore alla stringa char* stampa_recor(scheda_t* s){ char* strnome, strcognome; strnome=strncpy(strnome, s->autore->nome, sizeof(strnome-1)); strnome[sizeof(strnome)-1]= '\0'; strcognome=strncpy(strcognome, s->autore->cognome, sizeof(strcognome-1)); strnome[sizeof(strnome)-1]= '\0'; }
La cosa che mi lascia perplesso è, che le due chiamate alla strncpy sono identiche, e gli elementi che gli passo sono elmenti della stessa struttura, solo che, il primo non genera nessun errore, il secondo si!codice::25:11: warning: passing argument 1 of ‘strncpy’ makes pointer from integer without a cast [enabled by default] /usr/include/string.h :131 :14: note: expected ‘char * restrict’ but argument is of type ‘char’ scheda_to_record.c:25:21: warning: assignment makes integer from pointer without a cast [enabled by default]![]()
Lo stesso identico procedimento lo uso anche in un'altra funzione, anche li nessun errore! Che c'è di sbagliato secondo voi? Io non riesco proprio a capirlo questo errore! Confido in voi, grazie in anticipo!

Rispondi quotando