Un menu para escoger el nombre del archivo a crear, si se desea sobrescribir o añadir un mensaje, el mensaje que poner y otra opcion para salir del programa.
El problema que ya me rompe la cabeza hace media hora es que, si uso scanf("%s"), no puedo guardar el mensaje con espacios, si uso gets() o fgets() apartir de la 2º vuelta del do while me genera mucho problema, como que se salta los gets() o fgets() y no me deja ingresar otros nombres de archivos, etc..., al igual que si uso scanf("%[^\n]"), entonces les pido su ayuda, no entiendo muy bien por que sucede el problema, quiero poder poner mensaje con espacios en blanco en mi archivo de texto, pero tambien quiero poder elegir las opciones que puse todas las vueltas que quiera, ¿algun experto en la materia que me ayude?.
Mi codigo esta aqui.
Código:
#include <stdio.h>
int main()
{
FILE *archivo;
char nombretxt[256], mensaje[256];
int es_primera = 0;
int opc;
do
{
if (es_primera)
printf("\n");
printf("Ingrese una opcion...\n");
printf("\n1. Crear o anadir al archivo");
printf("\n2. Crear o sobreescribir archivo");
printf("\n3. Salir\n\n");
scanf("%i", &opc);
switch (opc)
{
case 1:
printf("\nIngrese el nombre del archivo que desea crear o al que desea añadirle un mensaje: ");
scanf("%s", nombretxt);
archivo = fopen(nombretxt, "a");
if (archivo != NULL)
printf("\nArchivo creado con exito");
else
printf("\nAh ocurrido un error en la creacion del archivo");
printf("\n\nIngrese el mensaje que dese grabar en el archivo de texto: ");
scanf("%s", mensaje);
fputs(mensaje, archivo);
fclose(archivo);
break;
case 2:
printf("\nIngrese el nombre del archivo que desea crear o sobrescribir: ");
scanf(" %s", nombretxt);
archivo = fopen(nombretxt, "w");
if (archivo != NULL)
printf("\nArchivo creado con exito");
else
printf("\nAh ocurrido un error en la creacion del archivo");
printf("\n\nIngrese el mensaje que dese grabar en el archivo de texto: ");
scanf(" %s", mensaje);
fputs(mensaje, archivo);
fclose(archivo);
break;
case 3:
printf("\nSaliendo del programa...");
break;
default:
printf("\nNo es una opcion valida");
break;
}
es_primera++;
} while (opc != 3);
return 0;
}
Se los agradeceria demasiado.
Saludos.