Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con programa de ficheros en c

Estas en el tema de problema con programa de ficheros en c en el foro de C/C++ en Foros del Web. Hola el caso es que estoy haciendo un programa en C para practicar el tema de los ficheros, y lo que quería es que el ...
  #1 (permalink)  
Antiguo 13/08/2010, 09:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
problema con programa de ficheros en c

Hola el caso es que estoy haciendo un programa en C para practicar el tema de los ficheros, y lo que quería es que el programa diga que clase de fichero desea crear(puse para que se puedan crear dos tipos de ficheros uno de microsoft world(*.doc) y el otro de bloc de notas(*.txt)) y depende de lo elegido que cree un formato de fichero o otro hasta aca todo bien pero quiero que el usuario ponga el nombre del fichero. Al compilarlo va todo bien por que no me marca ningún error pero cuando lo ejecuto algo no va bien(no me crea el fichero ni me deja introducirle el nombre ) que les dejo el programa(no esta acabado)





#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
FILE *fp;
char eleccion[4];
char txt[4]={"txt"};
char doc[4]={"doc"};
char cadena[700];
char file_name[20];
printf("puede crear un archvo de texto o de microsoft word?\n(si desea de texto tecle \"txt\" y si quiere de word tecle \"doc\")\n");
fgets(eleccion,4,stdin);
strcmp(eleccion,txt);
if (strcmp(eleccion,txt)==0){
if (fp==NULL){
printf("\a no se puede abrir el fichero\n");
return 1;
}
else{
printf("introduzca el nombre del archivo: \n");
fgets (file_name,20,stdin);
fp=fopen(file_name,"w");
printf("acontinuacion escriba lo que qiere que aparezca en el fichero: \n\n:");
fgets(cadena,700,stdin);
fputs(cadena,fp);
fclose(fp);
printf("el fichero a sido creado exitosamente\n");

}

}
if (strcmp(eleccion,doc)==0){

fp=fopen("fichero.doc","w");
if (fp==NULL){
printf("\a no se puede crear el fichero\n");
return 1;
}

else{
printf("\a fichero creado con Exito\n");
printf("acontinuacion escriba lo que qiere que aparezca en el fichero: \n\n:");
fgets(cadena,700,stdin);
fputs(cadena,fp);
fclose(fp);
printf("el fichero a sido creado exitosamente");

}

}



system("PAUSE");
return 0;
}
  #2 (permalink)  
Antiguo 13/08/2010, 12:27
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 4
Respuesta: problema con programa de ficheros en c

pues mira cuando intentas usar un txt, primero preguntas si es nulo antes de abrirlo, entonces pues siempre te va a marcar esa opcion, otra cuando intentas ponerle un nombre pues sino pones en consola nombre mas extencion (nombre.txt), pues es imposible que te abra el archivo lo que tendrias que hacer es concatenar tu no mbre de archivo + extencion antes de intentar abrir el archivo.

Lo que podrias hacer es primero pedir el tipo de archivo, despues pedir el nombre del archivo y ahora si examinar que tipo de archivo es, concatenar el nombre del archivo con la extencion correcta, abrir el archivo, preguntar su estado y luego todo lo demas.

Saludos.
  #3 (permalink)  
Antiguo 13/08/2010, 13:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: problema con programa de ficheros en c

no entiendo lo que hay que cambiar...
  #4 (permalink)  
Antiguo 13/08/2010, 16:36
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 4
Respuesta: problema con programa de ficheros en c

Código C:
Ver original
  1. if (strcmp(eleccion,txt)==0){
  2. if (fp==NULL){/*cuando entra aqui preguntas si el archivo es Null entonces dile que \
  3. no se puede abrir y como nisiquiera lo has intentado abrir, pues ovio q nunca va a entrar a tu else*/
  4. printf("\a no se puede abrir el fichero\n");
  5. return 1;
  6. }
  7. else{
  8. printf("introduzca el nombre del archivo: \n");
  9. fgets (file_name,20,stdin);/*aqui tienes que agregarle un .txt a lo que el usuario introduzca, para que en
  10. tu fopen lo abra correctamente*/
  11. fp=fopen(file_name,"w");// esta sentencia es la que deberia ir antes de tu if, como le hiciste para habrir tu *.DOC
  12. printf("acontinuacion escriba lo que qiere que aparezca en el fichero: \n\n:");
  13. fgets(cadena,700,stdin);
  14. fputs(cadena,fp);
  15. fclose(fp);
  16. printf("el fichero a sido creado exitosamente\n");
  17.  
  18. }
  19.  
  20. }
yo lo haria asi:

1.Inicio
2. dame el tipo de archivo que quieres crear.
3. Dame el nombre del archivo
4. si tipo de archivo es txt pasa a 5. sino pasa a 9
5. concateno nombre de archivo con .txt
6. intento abrir archivo, si archivo != Null pasa a 7 sino pasa a 8.
7. escribo en archivo pasa a 10.
8. archivo no abierto. pasa a 10.
9. concateno nombre de archivo con .doc pasa a 6.
10.fin
una forma facil de decirte lo que tienes que hacer, espero que le entiendas.
Saludos.

Última edición por gvite666; 13/08/2010 a las 16:50

Etiquetas: ficheros, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:09.