2012-12-26 29 views
9

Diciamo che ho 2 stringhecopiare caratteri specifici da una stringa in un'altra stringa

char str_cp[50],str[50]; 
str[]="how are you" 

e voglio mettere la seconda parola ex "sono" in un'altra stringa denominata str_cp quindi se io uso

printf("%s ,%s",str,str_cp); 

sarà come

how are you 
are 

come posso farlo? (ho provato la funzione strncpy ma può copiare solo caratteri specifici dall'inizio della stringa) c'è un modo per usare un puntatore che punta al 4 ° carattere della stringa e usarlo nella funzione strncpy per copiare i primi 3 caratteri ma l'inizio è il 4 ° personaggio?

risposta

17

ho cercato strncpy funzione ma può copiare solo i caratteri specifici da beggining della stringa

strcpy famiglia di funzioni copierà dal punto che si dice di copiare. Ad esempio, per copiare dal quinto carattere, è possibile utilizzare

strncpy(dest, &src[5], 3); 

o

strncpy(dest, src+5, 3); // Same as above, using pointer arithmetic 

Nota che strncpy sarà non null-terminare la stringa per voi, a meno che non si colpisce la fine del la stringa di origine:

Nessun carattere null viene aggiunto in modo implicito alla fine della destinazione se la sorgente è più lunga di num (quindi, in questo caso, destinazione ma y non essere una stringa C con terminazione nulla).

è necessario null-terminare il risultato da soli:

strncpy(dest, &src[5], 3); 
dest[3] = '\0'; 
+0

grazie you.I pensato che strncopy può iniziare solo dal punto di inizio della stringa – user1809300

+2

@ funzioni stringa user1809300 C non hanno idea di dove la la stringa inizia effettivamente: per loro, una stringa è solo un puntatore nella memoria. Pensano che comincino ovunque tu gli dica che lo fa, così puoi passare loro liberamente un puntatore nel mezzo della stringa, se è quello di cui hai bisogno. – dasblinkenlight

+0

ho un'altra domanda: se salgo in str_cp la parola "sono" e io uso un'altra volta la strncpy per copiare da str gli ultimi 3 caratteri ex "tu" nello str_cp quindi in str_cp i "sono" saranno rimossi e avrà solo la nuova parola "tu"? o ho bisogno di liberare questa parte di memoria e quindi copiare in str_cp – user1809300

Problemi correlati