Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NOB2014

#31
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. -

#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.
 
#32
Hola.
No logro que me caiga la ficha del todo con lo que propones, te pediría tan solo unos minutos para que me hagas una pequeña función diciéndome lo que hago mal y como seria la forma correcta de hacerlo. -

Gracias MAFUS.
Un gran saludo.
#33
Hola, gente ¿cómo están?
Lo que me trae en este caso no es para pedir ayuda porque el programa no funciona, lo que quisiera es que me digan que debería cambiar, que les parece, ¿está bien encarado?, estoy consiente que esto se lo debería preguntar a un profe o a un amigo, pero como ya algunos conocen por mi edad (65) no tengo ni una cosa ni la otra,-
Es todo, espero que alguien con mucho tiempo lo revice, no tengo ningún apuro. -   

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

#define MAX 80

void copiaDeSeguridad( FILE *ptrGuiaTel, FILE *ptrGtTemp ); //GT0001
void ingresarFrase( char frase[] ); //GT0002
void copiar( FILE *ptrGuiaTel, FILE *ptrGtTemp, char frase[] ); //GT0003
void errorEscritura( FILE *ptrGuiaTel, FILE *ptrGtTemp ); //GT0004
void mensaje( void );


int main( int argc,char **argv ){
FILE *ptrGuiaTel = NULL, *ptrGtTemp = NULL;
char frase[MAX];

copiaDeSeguridad( ptrGuiaTel, ptrGtTemp ); //GT0001
ingresarFrase( frase ); //GT0002
copiar( ptrGuiaTel, ptrGtTemp, frase ); //GT0003

return EXIT_SUCCESS;
}


void copiaDeSeguridad( FILE *ptrGuiaTel, FILE *ptrGtTemp ){ //GT0001
char c, x;

if( !( ptrGuiaTel = fopen( "archGuiaTel.txt", "r" ))){
mensaje();
exit(1);
}
if( !( ptrGtTemp = fopen( "archGtTemp.txt", "w" ))){
mensaje();
exit(1);
}

c = fgetc( ptrGuiaTel );
while ( c != EOF ){
x = fputc( c, ptrGtTemp );
if (x != c){
mensaje();
exit(1);
}
c = fgetc( ptrGuiaTel );
}

if( ( fclose( ptrGuiaTel ) ) ){
mensaje();
exit(1);
}
if( ( fclose( ptrGtTemp ) ) ){
mensaje();
exit(1);
}
}

void ingresarFrase( char frase[] ){ //GT0002
int ok=0;

do{
printf( "\n Ingrese frase.....:" );
fgets( frase, MAX, stdin );
ok = strlen( frase );
}while( ok <= 1 );
}

void copiar( FILE *ptrGuiaTel, FILE *ptrGtTemp, char frase[] ){ //GT0003

if( !(ptrGuiaTel = fopen( "archGuiaTel.txt", "a" ))){
mensaje();
exit(1);
}

fprintf( ptrGuiaTel, "%s", frase );

if( fflush( ptrGuiaTel ) != 0){
mensaje();
fclose( ptrGuiaTel );
errorEscritura( ptrGuiaTel, ptrGtTemp ); //GT0004
exit(1);
}

if( ( fclose( ptrGuiaTel ) ) ){
mensaje();
exit(1);
}
}

void errorEscritura( FILE *ptrGuiaTel, FILE *ptrGtTemp ){ //GT0004

if( rename("archGtTemp.txt","archGuiaTel.txt") !=0 ){
mensaje();
exit(1);
}

if(remove( "archGuiaTel.txt") !=0 ){
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');
}

/*
GT0001 - Funcion copiaDeSeguridad
Efectuo una copia del archivo original por si fallara la escritura en el mismo, si esto
ocurriera renombro la copia con el mismo nombre que el archivo original y a este lo borro,
con esto me aseguro que el archivo en disco no quede corrupto. -
Si fallara la apertura de los archivos archGuiaTel.txt o archGtTemp.txt imprimo un mensaje
y cierro el programa (mensaje y exit(1)), lo mismo ocurrira si falla la escritura en el archivo temporal (if (x != c){).-
Si la apertura de los 2 archivos es correcta como asi la escritura, solo queda constatar si
el cierre de los mismos ocurre sin errores, de lo contrario se procedera de la misma manera que en la apertura de los mismos (mensaje y exit (1). -
Nota: En esta funcion se abre y se cierra el archivo "archGtTemp.txt".
//GT0002 - Funcion ingresarFrase   
El do-while es para que no se pueda salir de la funcion si no se ha ingresado por lo menos
un dígito.-
//GT0003 - Funcion copiar
Con fprintf( ptrGuiaTel, "%s", frase ); copio la frase en el buffer intermedio y con fflush
copio la frase desde el buffer al disco rigido(archGuiaTel.txt).-
Verifico si la apertura y cierre del archivo ocurre sin errores.-
En el caso de que fallara fflush llamo a la (//GT0004) funcion errorEscritura para renombrar el archivo archGtTemp.txt por archGuiaTel.txt para luego borrar el
                archivo original que seguramente si no se pudo escribir es porque está corrupto(al final con remove lo borro). -
*/


Saludos.
#34
Hola, un saludo para todos.
Estoy de acuerdo con matrix1566, (no con ese calificativo) porque cierta gente es reticente en mostrar códigos, por supuesto que no es obligación hacerlo, pero hay momentos que hay códigos que con 30 líneas son suficientes para que funcionen, porque no mostrarlos si para un experto es cuestión de unos minutos realisarlo, después están aquellos (esto si lo califico de ridículo) que argumentan que de esa manera no se aprende yo digo entreguemos con libertad los códigos luego el que lo recibe que se haga cargo en discernir si de esa manera aprende o si lo hace un vago, en todo caso no hay en este foro y en toda la web millones de programas finales efectuados sin ningún prejuicio. -
Que bello es vivir sin prejuicios. -

Saludos.       
#35
Hola, AnthonyS.
Muchas gracias por ocuparte del tema, creo que no entendiste bien mis inquietudes. -
¿A cuál de estas 3 preguntas respondes con tu post?
Citarhay alguna manera de informar el error con detalle?, ¿se debe intentar una segunda vez?, ¿que puedo hacer como programador para ayudar a solucionar el problema?. -

Gracias nuevamente. -
Daniel
#36
Hola, gente, que tengan un muy buen día. -
La duda es que se debe hacer cuando la función fclose intenta cerrar un archivo y no lo logra, ¿hay alguna manera de informar el error con detalle?, ¿se debe intentar una segunda vez?, ¿que puedo hacer como programador para ayudar a solucionar el problema?. -

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

int main(int argc,char **argv){
char frase[] = "arequito, centro soguero del pais";
FILE *ptrFrase = NULL;

if(!(ptrFrase = fopen("frase.txt", "w"))){
printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
exit(1);
}

fprintf(ptrFrase, "%s", frase);

if( fclose( ptrFrase )!=0){
printf( "\n No se ha podido cerrar el fichero %s.", frase );
}

return EXIT_SUCCESS;
}
//https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos#fprintf

Es todo por el momento, espero que se entienda cuál es mi desconocimiento. -
Saludos.
#37
Programación C/C++ / Re: system cls o clear
15 Febrero 2017, 20:06 PM
Proba con esto ¿a ver si te funciona?

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

void borrar( void );

int main( void ){
char a[] = "La casa de Bernarda Alba", *b = &a[10];

printf( "\n Programa que muestra como borrar terminal tanto en Linux como Windows.\n\n"
" Presione <Enter> para continuar...." );
getchar();
borrar();
printf("\n %s\n", b);

return 0;
}

void borrar( void ){
system("cls||clear");
}
Saludos.
#39
Gracia Randomize, sos un genio porque no buscar por fuera del sistema operativo, me pongo a consultar de inmediato, en el post anterior no hice referencia a tu pregunta por qué no la entendía. -

CX 2 en 1 8.9" CX9108W

Saludos.
#40
Hola, saludos a todos.
Paso a contarles lo que me ocurrió, el video que propone El_Andaluz es el primero luego hay otro del mismo autor, hice paso a paso lo que este propone con la salvedad que en un momento sugiere que no instale todo lo que muestra el programa pero danielito como siempre un poco arrevatado y por no encontrar el botón que indicaba como hacerlo de forma manual le di a que instale todo y o sorpresa el sistema operativo no arrancó más , en un momento me sugería algo como reinstalar el mismo lo acepte y ahora todo funciona salvo que sigo sin tener audio. Tendré que enviarla al service, parece no haber otra solución, salvo que Uds. me indiquen otra sugerencia. -

Saludos.