elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda][C++] Se saltea el primer comando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda][C++] Se saltea el primer comando  (Leído 4,021 veces)
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
[Ayuda][C++] Se saltea el primer comando
« en: 1 Febrero 2015, 02:09 am »

Resulta que estaba en minecraft y me encontré un cubito (?, resulta que el error de mi programa es el siguiente, yo pongo el archivo que deseo y no sale, probe con if, con while y da el mismo resultado pero no interpreta la primera linea. Tengan en cuenta que es mi primer programa. Lo mas extraño es que antes de unas modificaciones funcionaba de 10. Parece que esta peor que los glitchs del GTA V.

Código
  1. #include <cstdio>
  2. #include <cctype>
  3. #include <cstring>
  4. #include <cstdlib>
  5. #include <iostream>
  6. #include <ctime>
  7. //#include <windows.h> Por si se quiere un sleep
  8.  
  9. using namespace std;
  10.  
  11. FILE *archivo;
  12.   FILE *ccmd;
  13. char *pos;
  14. char lineas[150];
  15.  
  16. // DICCIONARIO DE PROCEDIMIENTOS, PARA SIMPLIFICAR:
  17. /*
  18. void fscls(){
  19. fprintf(ccmd,"\tcout << string(50, '\\n');\n");
  20. }
  21. void fsfin(){
  22. fprintf(ccmd,"\texit (0) ;\n");
  23. }
  24. void fspaus(){
  25. fprintf(ccmd,"\tgetchar();\n");
  26. }
  27. void fsAboWhi(){
  28. lineas[0] = '\0';
  29. } */
  30. void ArchCheq( FILE *fili,int n){
  31. if (fili == NULL){
  32. cout << "Error de archivo ("<< n << ")" << endl;
  33. exit(1);
  34. }
  35. }
  36.  
  37. int main( int argc, char **argv) {
  38. clock_t inicio,fin;
  39. inicio=clock();
  40.               // Fix para que el programa no falle si no tiene comandos
  41. if ( argc < 3 ) {
  42. cout<<"Ejemplo: programa \"Archivo a Abrir.cmd\" -c \"ArchivoSaliente.c\" "<<endl;
  43. return 1;
  44. }
  45. if ( !strcmp( argv[2], "-c" ) ) {
  46. archivo = fopen(argv[1],"r");
  47. ccmd = fopen(argv[3],"wt");
  48. }else{
  49. cout << "Ejemplo: programa \"Archivo a Abrir.cmd\" -c \"ArchivoSaliente.c\" "<< endl;
  50. }
  51. //Verificacion
  52. ArchCheq(archivo,1);
  53. ArchCheq(ccmd,2);
  54.  
  55. while (!feof(archivo))
  56. {
  57. fgets( lineas, 150, archivo ); //LEE EL ARCHIVO LINEA POR LINEA.
  58. if ((pos=strchr(lineas, '\n')) != NULL) *pos = '\0'; //AGREGA CARACTER NULO
  59.  
  60. // INTERPRETADOR:
  61. // PAUSAS
  62. if (!strcmp(lineas,"PAUSE>NUL")){
  63. fprintf(ccmd,"\tgetchar();\n");
  64. lineas[0] = '\0';
  65. }
  66. if (!strcmp(lineas,"PAUSA>NUL")){
  67. fprintf(ccmd,"\tgetchar();\n");
  68. lineas[0] = '\0';
  69. }
  70.  
  71. if (!strcmp(lineas,"PAUSE")){
  72. fprintf(ccmd,"\tcout << \"Presione una tecla para continuar.\" << endl;\n");
  73. fprintf(ccmd,"\tgetchar();\n");
  74. lineas[0] = '\0';
  75. }
  76.  
  77. if (!strcmp(lineas,"PAUSA")){
  78. fprintf(ccmd,"\tcout << \"Presione una tecla para continuar.\" << endl;\n");
  79. fprintf(ccmd,"\tgetchar();\n");
  80. lineas[0] = '\0';
  81. }
  82.  
  83. // EXIT, FALTA PARA ESPECIFICAR.
  84. if (!strcmp(lineas,"EXIT")){
  85. fprintf(ccmd,"\texit (0) ;\n");
  86. lineas[0] = '\0';
  87. }
  88. if (!strcmp(lineas,"SALIR")){
  89. fprintf(ccmd,"\texit (0) ;\n");
  90. lineas[0] = '\0';
  91. }
  92.  
  93. // SECTOR PARA LIMPIAR PANTALLA
  94. if (!strcmp(lineas,"CLS")){
  95. fprintf(ccmd,"\tcout << string(50, '\\n');\n");
  96. lineas[0] = '\0';
  97. }
  98. if (!strcmp(lineas,"CLEAR")){
  99. fprintf(ccmd,"\tcout << string(50, '\\n');\n");
  100. lineas[0] = '\0';
  101. }
  102. if (!strcmp(lineas,"LIMPIAR")){
  103. fprintf(ccmd,"\tcout << string(50, '\\n');\n");
  104. lineas[0] = '\0';
  105. }
  106.  
  107. // Sistema complejo
  108. //ECHO
  109. if (strncmp (lineas,"ECHO",1) == 0) // Si se verifica la existencia procede a procesar la linea
  110. {
  111. char ECHO[] = "ECHO ";
  112. int posicion = strlen( lineas ) - strlen( strstr( lineas, ECHO  ) );
  113.  
  114. /* // copiar la primera linea (no es necesario en este caso)
  115. for( int a = 0; a < posicion; a++ )
  116. lineas[ a ] = lineas[ a ];
  117. */
  118. //copia la segunda linea
  119. for( int a = posicion; a < strlen( lineas ); a++ )
  120. lineas[ a ] = lineas[ a+5 ]; // 5 es el tamaño del ECHO
  121. fprintf(ccmd,"\tcout << \"%s\" << endl;\n",lineas);
  122. lineas[0] = '\0';
  123.  
  124. }
  125. if (!strcmp(lineas,"\0"))
  126. {
  127. }else{
  128. fprintf(ccmd,"\t%s\n",lineas); // SI NO COINCIDE CON NINGUNO LO IMPRIME EN C/C++ (MUY BETA).
  129. }
  130. // Sleep(100); requiere windows.h
  131.   }
  132. fclose(archivo);
  133. fclose(ccmd);
  134.  
  135. cout << "\x5C\x5C Interpetracion finalizada \x5C\x5C" << endl;
  136. fin=clock();
  137. printf("Tiempo transcurrido: %f segundos\n", (fin-inicio)/(double)CLOCKS_PER_SEC);
  138. }
  139.  


« Última modificación: 1 Febrero 2015, 04:21 am por sabeeee » En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #1 en: 1 Febrero 2015, 02:13 am »

como que se salta el primer comando?

intentaste correrlo en el debugger y ponerle watch a las variables involucradas a ver que pasaba?

en que linea del programa que posteaste ves que da el error?


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #2 en: 1 Febrero 2015, 02:32 am »

como que se salta el primer comando?

intentaste correrlo en el debugger y ponerle watch a las variables involucradas a ver que pasaba?

en que linea del programa que posteaste ves que da el error?

En ninguna, dar warnings que no tienen nada que ver, ¿y eso del debugger que es, cual se recomienda?
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #3 en: 1 Febrero 2015, 02:35 am »

que ide usas?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #4 en: 1 Febrero 2015, 02:43 am »

Ninguna, MinGW, justo hoy estaba utilizando Code::Blocks pero después no lo use mas.
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #5 en: 1 Febrero 2015, 02:49 am »

yo uso netbeans (casi igual que code::blocks)... no es malo y me sirve para java. c,c++, php, etc...

el punto es...

el debugger es una herramienta integrada en el compilador, que en el ide que te permite ver la ejecución de tu código paso a paso (no se como usarlo fuera del ide) literalmente verás el cursor linea a linea, le puedes configurar saltos y puedes ver las variables en tiempo real....

creo que este video explica en general lo que hay que saber del debugger en code::blocks... sin voz y con musica de serie tipo magical girl de fondo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #6 en: 1 Febrero 2015, 03:05 am »

a ok perfecto, gracias, voy a probar ese netbeans y el debugger, de seguro el error debe ser mínimo y no me doy cuenta.
EDITO: jajajaja literalmente cuando lo compile, con el Code::Blocks a mano se inicio y me dio error directamente desde Windows.

Código:
//Fix para evitar el problema.
     if ( argc < 3 ) {
cout<<"Ejemplo: programa \"Archivo a Abrir.cmd\" -c \"ArchivoSaliente.c\" "<<endl;
return 1;
}
« Última modificación: 1 Febrero 2015, 03:21 am por sabeeee » En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #7 en: 1 Febrero 2015, 03:09 am »

probablemente... siempre los debuggers son muy utiles porque algunas veces los errores son tonterías de usar un - donde iba un +, o una "y" donde uba una "x" y te ayuda a visualizar el paso a paso y donde metiste la pata
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: [Ayuda][C++] Se saltea el primer comando
« Respuesta #8 en: 1 Febrero 2015, 03:12 am »

jajaj me encanto la musica
pero el de visual es mejorcito
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines