Hola a todos. He echo el siguiente programa:
#include <stdio.h>
void menu()
{
printf ("\n:: TinyBlock v1.1 ::\n ");
printf ("\n[1] Abrir Archivo\n[2] Crear Archivo\n[3] Creditos\n[4] Salir\n ");
fflush( stdout );
}
void otroarchivo()
{
int seleccion;
printf("\nDeseas:\n[1] Abrir un archivo\n[2] Crear un archivo\n[3]Salir\n");
scanf("%i", &seleccion);
{
int ch2;
while ((ch2 = getchar()) != EOF && ch2 != '\n')
;
}
if (seleccion == 1)
abrir_archivo();
else if (seleccion == 2)
crear_archivo();
else if (seleccion == 3)
return 0;
}
void abrir_archivo()
{
FILE *fichero;
char archivo1[50];
char letra;
printf ("Fichero a abrir:");
gets (archivo1);
fichero = fopen(archivo1,"r");
if (fichero==NULL)
{
printf( "No se puede abrir el fichero.\n" );
exit( 1 );
}
printf( "Contenido del fichero:\n" );
letra=getc(fichero);
while (feof(fichero)==0)
{
printf( "%c",letra );
letra=getc(fichero);
}
if (fclose(fichero)!=0)
printf( "Problemas al cerrar el fichero\n" );
otroarchivo();
}
void crear_archivo()
{
char texto[10000];
char archivo2[50];
printf ("Nombre del archivo a guardar: ");
gets(archivo2);
printf ("\nComienza a escribir! (Teclea *EOF* para guardar y salir): \n \n");
freopen( archivo2,"w",stdout );
gets(texto);
do {
printf( "%s\n",texto );
gets(texto);
} while ( strcmp(texto, "*EOF*") != 0 );
fprintf( stderr, "Guardado correctamente en: \"%s\" \n \n", archivo2 );
otroarchivo();
}
int main(void)
{
int opcion;
principio:
menu();
scanf("%i", &opcion);
{
int ch1;
while ((ch1 = getchar()) != EOF && ch1 != '\n')
;
}
switch( opcion )
{
case 1:
abrir_archivo();
break;
case 2:
crear_archivo();
break;
case 3:
printf ("_____________________________________________________\n");
printf ("\nBy Kerberos. GNU/GPL Software.\n");
goto principio;
break;
case 4:
return 0;
break;
default:
printf ("_____________________________________________________\n");
printf ("\nSeleccion no disponible.\n");
goto principio;
}
}
Bien, si ahora, por ejemplo seleccionamos Abrir archivo me sale:
:: TinyBlock v1.1 ::
[1] Abrir Archivo
[2] Crear Archivo
[3] Creditos
[4] Salir
1
Fichero a abrir:lala.txt
Contenido del fichero:
lalac
Deseas:
[1] Abrir un archivo
[2] Crear un archivo
[3]Salir
Hasta ahi bien, pero, en cambio si selecciono Crear archivo sale:
Nombre del archivo a guardar: hola.txt
Comienza a escribir! (Teclea *EOF* para guardar y salir):
hola
*EOF*
Guardado correctamente en: "hola.txt"
Cuando debajo de "Guardado correctamente en: "hola.txt"" debería haber salido:
Deseas:
[1] Abrir un archivo
[2] Crear un archivo
[3]Salir
Utilizo Ubuntu Linux con GCC como compilador.
Por que ocurre eso? Alguien sabe como solucionarlo? Muchas gracias.