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?
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;
}