Sì, ma nome1 deve essere di dimensioni tali da poter contenere tutto quello che ci accoderai.Originariamente inviato da skyboy85
1) in char nome1[] dove specificare una dim??? ad esempio 20???
Tra parentesi, tra il dichiarare nome1 come char* e come char[] c'è comunque una differenza: nel primo caso accade quello che ti ho detto, nel secondo, invece, viene effettivamente creato un array nello stack (non nella tabella delle stringhe) di dimensioni determinate dal compilatore in base alla stringa con cui lo inizializzi.
Non saprei, visto che non conosco la itostring (non è standard).2) n1 devova essere dichiarata come char n1[]???
Sono identici (char[] e char * in una chiamata a funzione sono la stessa cosa, ossia un puntatore a char). In ogni caso per evitare buffer overrun ti consiglio di utilizzare la strncat, così da essere sicura di non superare le dimensioni dell'array.dalla documentazione di strcat ho visto i prototipi:
char *strcat ( char *s1, const char*s2)
oppure
char *strcat(char dest[], char *sorg);
a quale mi devo riferire???
codice:strncat(nome1, n1, sizeof(nome1)-strlen(nome1)-1); strncat(nome1, nome2, sizeof(nome1)-strlen(nome1)-1); nome1[sizeof(nome1)-1]=0;Non vedo il collegamento tra le due cose... :master:in entrambi i casi la funzione restituisce un puntatore a dest o s1 quindi un' istruzione di questo tipo è lecita:
q->richfd=open(nome1,O_RDWR|O_CREAT,S_IRUSR|S_IWUS R)