En C, comment puis-je copier une chaîne avec des indices de début et de fin, afin que la chaîne ne soit que partiellement copiée (de l'index de début à l'index de fin)?
Ce serait comme "copie de chaîne C" strcpy
, mais avec un index de début et de fin.
Avez-vous vérifié strncpy ?
char * strncpy (char * destination, const char * source, size_t num);
Vous devez comprendre que commence et fin définit en fait un num d'octets à être copié d'un endroit à un autre.
Utilisez strncpy
par exemple.
strncpy(dest, src + beginIndex, endIndex - beginIndex);
Cela suppose que vous avez
dest
est suffisamment grand.endIndex
est supérieur à beginIndex
beginIndex
est inférieur à strlen(src)
endIndex
est inférieur à strlen(src)
Utilisez simplement memcpy .
Si la destination n'est pas assez grande, strncpy ne se terminera pas null. si la destination est énorme par rapport à la source, strncpy remplit simplement la destination avec des valeurs nulles après la chaîne. strncpy est inutile et ne convient pas pour copier des chaînes.
strncpy est comme memcpy sauf qu'il remplit la destination de nulls une fois qu'il en voit un dans la source. C'est absolument inutile pour les opérations de chaîne. C'est pour fixe avec 0 enregistrements rembourrés.