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:
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';
}
Ora vi posto l'output del compilatore:
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]
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!
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!