Duda: Grabar un fichero en C modificando el nombre

Hola a todos, sorry por el título del post, pero no se me ocurría uno más descriptivo.

El tema es que quiero grabar varios ficheros cambiándole el número al final (en plan "prueba0.wav", "prueba1.wav","prueba2.wav",...)

Hasta ahora tengo el programa hecho, y al crear el fichero hago:

fp = sceIoOpen("./prueba.wav", PSP_O_WRONLY | PSP_O_CREAT |
PSP_O_TRUNC, 0777);

Cómo podría solucionarlo?
Había pensado en algo en plan:
char *nombre = prueba;
y luego concatenarle el número, y concatenarle ".wav"

pero soy un poco novatillo programando y no sé implementarlo.

Alguien me puede echar una mano?

Gracias ;)
Pues supongo que, aún siendo para PSP, podrás utilizar strcat o strncat para la concatenación.

O, si no hay más de diez ficheros y el número va de 0 a 9, con la misma cadena e ir modificando el número.


Saludos
Una duda que tengo es cómo concatenarle el int... Porque supongo que necesitará que sea un char lo que concatene. Es que en la psp itoa() no está disponible
Pues, opciones:

- http://www.elotrolado.net/showthread.php?s=&threadid=678218&highlight=itoa (acostúmbrate a buscar antes de preguntar ;-) )
- hacer tú una funcioncita que lo haga. No es difícil.

Habrá más opciones supongo, pero con eso te basta.


Saludos
Para esos casos lo mejor es un sprintf, que funciona como el printf pero a una cadena que le pasas.
Hacerte una funcion que lo haga puede ser interesante para aprender unas cuantas cosas.
uffff, yo mostraria primero los resultados por pantalla yo usando el gc recuerdo que las funciones de tratamiento de cadenas no solian funcionar... quiza tengas que hacerte la funcion de concatenacion tu mismo
bueno... he conseguido que funcione... a medias :P El código que utilizo es:


          //cuentaYak es el numero que quiero que aparezca al final del archivo
          //nombreFinal es el nombre del fichero


          char NumMuestra[2];// almacenamos un numero de 1digito
          sprintf(NumMuestra, "%d",cuentaYak);
          char *aux = strcat("./Segmento",NumMuestra);
          char *nombreFinal = strcat(aux,".wav");

          EscribeWAV(nombreFinal, 2*duracion - 70000, inicioTrama);


El problema es que los ficheros los graba tal que asi:

Segmento1.wav //este es el primero
Segmento1.wav2.wav //este es el segundo
Segmento1.wav2.wav3.wav //este es el tercero
...

No hay alguna manera de "borrar" el array (y luego se volvera a crear automaticamente al pasar de nuevo por ese punto)? Es que es como si se quedarán algunos datos almacenados...

Thanks ;)
Lo mejor es que lo hagas todo en el sprintf:

sprintf( cadenafinal,"%s%i%s","Segmento",numero,".wav");
Funciona perfectamente. Muchas gracias ;)

Y otra pregunta, que no se porque no funciona bien: le digo que grabe "16" en memoria ocupando 4 bytes y me graba "31 36 00 00". Lo mejo r de todo es que luego lo abro con un editor de textos y me reconoce el 16 ¿? El tema es: hay alguna forma de decirle lo que quiero que grabe directamente, es decir que escriba en memoria "10 00 00 00" (está el byte menos significativo al principio).

Thanks ;)

Edito de nuevo por si alguien tiene este mismo problema: Me he creado un array en plan:

char nuevo[]{
0x00, 0x21, etc...
};

y le he puesto que guarde en el fichero tomando del array y ha funcionado :D
8 respuestas