Hola, ¿cómo están?
Gracias MAFUS por el código y gracias por el consejo, estaba cometiendo un error de primer grado, lo voy a tener muy en cuenta de aquí en más. --
La ayudita que les pido ahora es la siguiente, alguien me podría decir como hacer para que falle fflush,
(línea 43) para saber el comportamiento total del programa necesito que esto ocurra, intente abrir el archivo archGuiaTel.txt (línea 36) para lectura pero no me ocasiona un error, simplemente no escribe la frase, pero el programa termina normalmente. -
Es todo y espero puedan darme la respuesta. -
saludos.
Gracias MAFUS por el código y gracias por el consejo, estaba cometiendo un error de primer grado, lo voy a tener muy en cuenta de aquí en más. --
La ayudita que les pido ahora es la siguiente, alguien me podría decir como hacer para que falle fflush,
(línea 43) para saber el comportamiento total del programa necesito que esto ocurra, intente abrir el archivo archGuiaTel.txt (línea 36) para lectura pero no me ocasiona un error, simplemente no escribe la frase, pero el programa termina normalmente. -
Es todo y espero puedan darme la respuesta. -
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 80
void ingresarFrase( char frase[] );
void copiar( char frase[] );
void errorEscritura( void );
void copiaDeSeguridad( const char *GtTxt, const char *GtBak );
void mensaje( void );
int main( void ){
char frase[MAX];
ingresarFrase( frase );
copiar( frase );
copiaDeSeguridad( "archGuiaTel.txt","archGuiaTel.bak" );
return EXIT_SUCCESS;
}
void ingresarFrase( char frase[] ){
int ok=0;
do{
printf( "\n Ingrese frase.....:" );
fgets( frase, MAX, stdin );
ok = strlen( frase );
}while( ok <= 1 );
}
void copiar( char frase[] ){
FILE *ptrGtTxt;
if( !(ptrGtTxt = fopen( "archGuiaTel.txt", "a" ))){
mensaje();
exit(1);
}
fprintf( ptrGtTxt, "%s", frase );
if( fflush( ptrGtTxt ) != 0){
mensaje();
fclose( ptrGtTxt );
errorEscritura( );
exit(1);
}
if( ( fclose( ptrGtTxt ) ) ){
mensaje();
exit(1);
}
}
void errorEscritura( void ){
if(remove( "archGuiaTel.txt" ) !=0 ){
mensaje();
exit(1);
}
if( rename( "archGuiaTel.bak","archGuiaTel.txt") !=0 ){
mensaje();
exit(1);
}
}
void copiaDeSeguridad( const char *GtTxt, const char *GtBak ){
FILE *ptrGtTxt, *ptrGtBak;
char c, x;
if( !( ptrGtTxt = fopen( GtTxt, "a" ))){
mensaje();
exit(1);
}
if( !( ptrGtBak = fopen( GtBak, "w" ))){
mensaje();
exit(1);
}
c = fgetc( ptrGtTxt );
while ( c != EOF ){
x = fputc( c, ptrGtBak );
if (x != c){
mensaje();
exit(1);
}
c = fgetc( ptrGtTxt );
}
if( ( fclose( ptrGtTxt ) ) ){
mensaje();
exit(1);
}
if( ( fclose( ptrGtBak ) ) ){
mensaje();
exit(1);
}
}
void mensaje( void ){
int ch, a;
printf( "\n Ha ocurrido un error y el programa finaliza sin cambios en el archivo." );
printf( "\n Pulse una tecla para continuar..."); a = getchar();
if( a != '\n') while ((ch = getchar()) != EOF && ch != '\n');
}
saludos.