Si è vero strncpy() non aggiunge il terminatore di stringa, quindi devi aggiungerlo tu.Originariamente inviato da ciromosketta
a dir la verità il codice postato su in alcuni casi non funziona, ad esempio:
se l'immagine iniziale si chiama fingerprint240x320_8bpp.raw , in uscita ottengo correttamente fingerprint240x320_8bpp_noisy.raw
con un immagine di nome lena512x512_8bpp.raw ottengo lena512x512_8bppWñN€h$=_noisy.raw
ho letto che strncpy non aggiunge automaticamente un terminatore di stringa, come faccio ad aggiungerlo manualmente nella posizione della stringa che desidero?
Potresti, invece, utilizzare una funzione che controlli l'effettiva lunghezza dell'estenzione e
modifichi il nome del file di conseguenza.
Ad esempio :
codice:#include <iostream.h> void fileNameSuffix(char *newFileName, char *fileName) { char ext[21]; int len = strlen(fileName), posp; for( posp = len; fileName[posp]!='.' && posp>=0; posp--); strncpy(ext, &fileName[posp], 20); ext[20]='\0'; strcpy( newFileName, fileName); newFileName[ posp ] = '\0'; strcat( newFileName, "_kuwa"); strcat( newFileName, ext); } int main() { char newName[260]; char name[260] = "lena512x512_8bpp.raw"; fileNameSuffix( newName, name); printf("newName = \"%s\"\n", newName ); return 0; }

Rispondi quotando