Autor
|
Tema: Ayuda en programa con ficheros! (Leído 7,317 veces)
|
Juan821
Desconectado
Mensajes: 25
|
Tengo un problema con este codigo #include <iostream> #include <stdlib.h> #include <time.h> #include <conio.h> #include <stdio.h> FILE *doc; using namespace std; int His(); int Cien(); int Depor(); int Geo(); int c=1; int main() { int s,tot,u=0; srand(time(NULL)); while (c==1) { system ("cls"); cout<<"Presione cualquier tecla para escoger su categoria"<<endl; getch(); s=rand()% 4 + 1; switch (s) { case 1: { His(); break; } case 2: { Cien(); break; } case 3: { Depor(); break; } case 4: { Geo(); break; } } } system ("pause"); return 0; } int His() { int x,i=1,w; system ("cls"); cout<<"<===============Su categoria es Historia===============>"<<endl; cout<<"Presione cualquier tecla para escoger su pregunta"<<endl; getch(); doc = fopen("C:\Users\HERNAN\Desktop\prueba.txt","r"); while(i<=5) w=getc(doc); if (w =='\n') printf ("\n"); else printf("%c",w); fclose(doc); return 0; } int Depor() { int x,i=1,w; system ("cls"); cout<<"<===============Su categoria es Ciencia===============>"<<endl; cout<<"Presione cualquier tecla para escoger su pregunta"<<endl; getch(); doc = fopen("C:\Users\HERNAN\Desktop\prueba.txt","r"); while(i<=5) w=getc(doc); if (w =='\n') printf ("\n"); else printf("%c",w); fclose(doc); return 0; } int Cien() { int x,i=1,w; system ("cls"); cout<<"<===============Su categoria es Deportes===============>"<<endl; cout<<"Presione cualquier tecla para escoger su pregunta"<<endl; getch(); doc = fopen("C:\Users\HERNAN\Desktop\prueba.txt","r"); while(i<=5) w=getc(doc); if (w =='\n') printf ("\n"); else printf("%c",w); fclose(doc); return 0; } int Geo() { int x,i=1,w; system ("cls"); cout<<"<===============Su categoria es Geografia===============>"<<endl; cout<<"Presione cualquier tecla para escoger su pregunta"<<endl; getch(); doc = fopen("C:\Users\HERNAN\Desktop\prueba.txt","r"); while(i<=5) w=getc(doc); if (w =='\n') printf ("\n"); else printf("%c",w); fclose(doc); return 0; }
El problema en la ejecución es este [MOD] para publicar código, usa la etiqueta GeShi correspondiente. Gracias.
Debes poner titulos descriptivos del tema, "Ayuda!" no lo es, leete las Reglas del Foro.
|
|
« Última modificación: 30 Junio 2014, 03:17 am por Juan821 »
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
|
Re: Ayuda!
« Respuesta #1 en: 25 Junio 2014, 21:59 pm » |
|
1. O usas los mecanismos de entrada salida de C (printf, scanf) o los de C++ (cin, cout)... pero por favor, no los mezcles. Puede dar problemas. 2. No uses conio.h... más información al respecto aqui3. No uses variables globales. Muy pocas veces es necesario su uso. Además hay que tener cuidado con ellas, pueden ser problemáticas y dificultan la lectura del código. 4. ¿Y si no se ha podido abrir el fichero? doc = fopen("C:\Users\HERNAN\Desktop\prueba.txt","r"); while(i<=5) w =getc(doc ); // Y si doc == NULL???
Te faltan comprobaciones ahí. 5. Si un if, un else, un while o un do-while ocupan más de una línea hay que usar llaves: while(i<=5) else
Ese código se va a quedar atascado en las dos primeras líneas. Como no hay llaves el while afecta únicamente a w=getc(doc). Además, aunque pusieses llaves no estás incrementando i... luego seguirías en un bucle sin fin que finalizaría con error al terminar de leer todo el archivo. 6. Los nombres de las variables salen gratis... pon nombres que te den una idea de la función de dicha variable. No es lo mismo: if ( i > j || x < w )
que: if ( velocidad > velocidadMaxima || fechaITV < hoy )
Seguro que con la segunda opción es más facil hacerse una idea de qué es lo que hace el código. Puede que haya algún otro error... pero como tienes que darle un repaso serio al programa no merece la pena seguir mirando.
|
|
|
En línea
|
|
|
|
Juan821
Desconectado
Mensajes: 25
|
|
Re: Ayuda!
« Respuesta #2 en: 25 Junio 2014, 23:57 pm » |
|
Ya hice lo que me dijiste pero persiste el error incluso puse para cuando doc sea null porque ahora me pone siempre error en la apertura del archivo, pero dime como soluciono lo del fichero y la librería la necesito para que se pause el programa porque con system pause no me gusta lo del printf no lo uso porque no me deja imprimir, la variable la necesito porque si responde una pregunta mal, hare que se salga del ciclo el programa todavia no esta completo
|
|
« Última modificación: 30 Junio 2014, 04:08 am por Juan821 »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
Re: Ayuda!
« Respuesta #3 en: 26 Junio 2014, 08:14 am » |
|
El path esta mal, no mire nada mas ya que eso salta a la vista, la \ se usa para secuencias de escape, la que corresponde usar en tu caso es \\ .
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
|
Re: Ayuda!
« Respuesta #4 en: 26 Junio 2014, 08:35 am » |
|
El path esta mal, no mire nada mas ya que eso salta a la vista, la \ se usa para secuencias de escape, la que corresponde usar en tu caso es \\ . Confiaba en que al ver que no se abrían los archivos, investigase un poco el tema y acabase viendo lo de las barras el solo.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
Re: Ayuda!
« Respuesta #5 en: 26 Junio 2014, 09:22 am » |
|
Confiaba en que al ver que no se abrían los archivos, investigase un poco el tema y acabase viendo lo de las barras el solo.
Le dijiste, como corresponde, que no usara conio.h y ahi sigue ... yo no confiaria tanto
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Juan821
Desconectado
Mensajes: 25
|
|
Re: Ayuda!
« Respuesta #6 en: 26 Junio 2014, 21:55 pm » |
|
Le dijiste, como corresponde, que no usara conio.h y ahi sigue ... yo no confiaria tanto Haber el error ya no es ese nisiquiera ya lo solucione era el users que no debe ir ahí porque es un comando prederminado, lo del conio es porque lo necesito y ahora mi problema es que el programa cuando abre el archivo entra en un bucle infinito y no sale porque no se todavia
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
|
Re: Ayuda!
« Respuesta #7 en: 27 Junio 2014, 08:17 am » |
|
Haber el error ya no es ese nisiquiera ya lo solucione era el users que no debe ir ahí porque es un comando prederminado O no te sabes explicar o no sabes lo que estás haciendo... lo que te dijo Eternal es El path esta mal, no mire nada mas ya que eso salta a la vista, la \ se usa para secuencias de escape, la que corresponde usar en tu caso es \\ . Es decir, que sustituyeses los símbolos '\' por '\\', ya que '\' se utiliza para secuencias de escape, es decir, se interpreta ese carácter y el siguiente como uno solo que además tiene un efecto especial: '\n' salto de línea, '\t' tabulador, etc. Dicho en cristiano. Tu ruta debería quedar: C:\\Users\\HERNAN\\Desktop\\prueba.txt lo del conio es porque lo necesito Lo necesitas por... espera, no me lo digas... getch?? hay mil alternativas a getch... tu por ejemplo que estás usando C++ puedes recurrir, por ejemplo, a "std::cin.ignore()". Tiene la ventaja de que es una solución estándar y multiplataforma. Ahora, si prefieres coger malos hábitos nada más empezar tú mismo, es tu decisión. Por cierto, si respondo a un mensaje con dudas lo menos que espero es que el interesado se tome la molestia de leer mi respuesta completa... por respeto y deferencia más que nada. Te lo digo porque te puse el enlace a un post en el que se indican malas prácticas en C y C++, además de explicar los motivos explica también diferentes posibilidades y soluciones. Por tu forma de hablar entiendo que has pasado de ese punto completamente... si no vas a leer las respuetas por que no te gustan... ¿para qué pides ayuda? y ahora mi problema es que el programa cuando abre el archivo entra en un bucle infinito y no sale porque no se todavia Pues mira, si te molestases en leer las respuestas de la gente lo sabrías. Además también deberías aprender a usar el depurador de código... al principio cuesta cogerle el punto, pero en cuanto adquieres soltura descubres lo práctico y útil que es: te permite evaluar y modificar variables, ves la secuencia de ejecución, puedes saltar instrucciones...
|
|
|
En línea
|
|
|
|
Juan821
Desconectado
Mensajes: 25
|
|
Re: Ayuda!
« Respuesta #8 en: 27 Junio 2014, 21:43 pm » |
|
Pues mira, si te molestases en leer las respuestas de la gente lo sabrías. Además también deberías aprender a usar el depurador de código... al principio cuesta cogerle el punto, pero en cuanto adquieres soltura descubres lo práctico y útil que es: te permite evaluar y modificar variables, ves la secuencia de ejecución, puedes saltar instrucciones...
Ok coregire lo del getch pero lo del bucle infinito ya puse a aumentar la i osea no estoy habalando del bucle del while de la funcion principal, estoy hablando del siclo que hay en las otras funciones el while y quitare la conio.h despues pero ese es mi problema mas grande si estoy aumentando cada vez que hay salto de linea porque no se detiene el programa?
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
|
Re: Ayuda!
« Respuesta #9 en: 28 Junio 2014, 16:26 pm » |
|
si por aumentar i te refieres a i=1+1 ... que es como tienes en tu código... ahí i va a valer SIEMPRE 2... luego NUNCA va a alcanzar el valor necesario para que el código abandone el bucle... ahí es donde entra la parte de aprender a usar el depurador... si usas el depurador este problema lo ves en seguida porque te das cuenta de que i no cambia su valor en la vida.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa para editar ficheros exe
« 1 2 »
Ingeniería Inversa
|
consejo
|
11
|
28,510
|
11 Marzo 2008, 08:20 am
por Shaddy
|
|
|
problema con programa de ficheros en c
Programación C/C++
|
Quake-man
|
1
|
2,563
|
10 Septiembre 2010, 18:39 pm
por nicolas_cof
|
|
|
programa con ficheros
Programación C/C++
|
tumayy
|
5
|
3,370
|
25 Octubre 2011, 06:22 am
por do-while
|
|
|
Ayuda programa con ficheros
« 1 2 »
Programación C/C++
|
ankora45
|
16
|
6,388
|
22 Septiembre 2012, 14:42 pm
por diegoCmC
|
|
|
ayuda con un programa de ficheros
Programación C/C++
|
aradxc56
|
1
|
2,005
|
13 Marzo 2019, 16:36 pm
por K-YreX
|
|