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_8bpp
Wñ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?
Si è vero strncpy() non aggiunge il terminatore di stringa, quindi devi aggiungerlo tu.
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;
}