Ver la versión completa : Programación en C - Ayuda con fopen
Hola a todos, lo que estoy haciendo es un poco rebuscado y por tanto la pregunta también, pero vamos a ello.
El programilla que estoy haciendo genera unos ficheros cuyo nombre viene dado por un contador situado en un fichero.
Si por ejemplo en el contador se encuentra el número 23 el nombre del fichero que quiero generar sería 24, pero por lo que veo no hay manera de introducir una variable dentro de 'fopen'
Aqui os pongo un ejemplo de como sería:
void generador()
{
int nombre;
int nombrefinal;
FILE *countname;
countname = fopen( "countname", "r" );
fscanf(countname, "%i", &nombre);
nombrefinal = nombre + 1;
fclose( countname );
FILE *creado;
creado = fopen(Aqui iría el nombre del fichero generado,"w");
.
.
.
fclose(creado);
}
Creéis que es posible?
Saludos, Nakio.
char * nombre <- o como sea, ya ni me acuerdo
int numero
scarnf(%s, &nombre)
numero = taltal sacado de tu fichero y retocado
char *nombrefichero=strcat(nombre, numero)
fopen(nombrefichero, "w");
No funciona, nu entiendo lo que haces con scarnf :S
Saludos, Nakio.
Lo he puesto en pseudocodigo practicamente, está lleno de errores. Tienes que declarar una cadena y un int, lees la cadena del nombre del archivo por teclado (¿es por teclado no?) de manera correcta, sacas el entero de donde sea, haces un strcat entre ambos a una nueva cadena auxiliar y usas el auxiliar como nombre de fichero.
EDIT: tengo una idea.
Saludos, Nakio.
yo en lugar de con strcat lo he hecho alguna vez generando el nombre del archivo con sprintf. pero la idea es la misma. ;)
Aiken
Al final lo hice con sprintf ;):
sprintf(nombrefichero, "%i", nombrefinal);
Saludos y gracias, Nakio.
< - >
Joeeee, tengo oxidadísimo el C.
Ahora tengo el siguiente problema. Si se da una condición en el programa se ejecuta una función, que no tiene argumentos, dentro de la cual hay un gets.
Pues bien, cuando ejecuto el programa y me ejecuta esa función pasa olímpicamente del gets y no me deja escribir la cadena de caracteres con espacios incluidos. Si cambio el gets por un scanf por ejemplo el programa si se detiene para poder insertar los datos, pero claro la función ya no cumple su cometido.
Alguna idea? :S
Saludos, Nakio.
Eso me pasaba a mi a veces (creo que con c++). Hay un error dentro de esas funciones con gets y se salta su uso. Ve metiendo flags a cada línea y comprueba que todo esté bien.
Aaaarghh! aparentemente esta todo bien pero no hay manera.
Me estoy poniendo de mala o**ia! me da que en breve me voy a sobar.
Saludos, Nakio.
< - >
Al final hoy más depejado he solucionado el problema con:
scanf("%*c%[^\n]",documento);
en lugar de:
gets( documento );
Saludos, Nakio.
FlipFlopX
07/08/2008, 00:09
Cuestión del compilador, el gets es "peligroso" :S si alguien sabe el porqué...
PharaOnyx
07/08/2008, 00:14
Cuestión del compilador, el gets es "peligroso" :S si alguien sabe el porqué...
Porque es propenso al 'buffer overflow' (desbordamiento de pila y tal x'D). Prueba con 'fgets'
Saludos, Alex
FlipFlopX
07/08/2008, 00:17
Una cosa más aprendida, gracias por el aporte, ya sé el porqué del "dangerous" ;)
Eso sí, flipante que si llamas a una función que contenga un gets() el programa se la pase por el forro...
Saludos, Nakio.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.