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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: 1 [2] 3 4
11  Programación / Programación C/C++ / [C][Bug][SOLUCIONADO] Problema al con mi código de traducción. en: 14 Enero 2015, 23:19 pm
Hola nuevamente foro, tengo un problema que me dificulta seguir con mi código, digo que es un bug porque hice mi código aparte, el cual funciona perfectamente, luego lo implemente a mi código y falla:

Código donde se presenta la falla:

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. // Limpiador de pantalla
  7. void clrScr()
  8. {
  9. //Windows/Linux
  10. if (system("CLS")) system("clear");
  11. /* Modo realmente multiplataforma (malo).
  12.     int n;
  13.     for (n = 0; n < 10; n++)
  14.     printf( "\n\n\n\n\n\n\n\n\n\n\n\n\n" );
  15. */
  16. }
  17.  
  18. // Mensaje "propagandistico"
  19. void Mensaje()
  20. {
  21. printf("\t+----------------------------+\n");
  22.    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  23.    printf("\t+----------------------------+\n");
  24. }
  25. // Limpiador de ENTER
  26. void EnterLimp()
  27. {
  28. while ( getchar() != '\n' );    /* limpia el caracter ENTER de la entrada estandar */
  29. }
  30.  
  31. int main()
  32. {
  33. int oculto;
  34. int clave;
  35.  
  36.    FILE *fp;
  37. char *cPtr;
  38.    char filename[30];          //filename for source code
  39.    //for command
  40.    char cmd[150];
  41.    //la clave
  42.    char cmb[350];
  43.  
  44. // Nombre archivo final
  45. Mensaje();
  46. printf("\nEntre el nombre que le quiere dar al codigo saliente(.c): ");
  47. scanf("%s",filename);
  48. EnterLimp();
  49.  
  50. clrScr();
  51.  
  52. // Tipo de clave
  53. Mensaje();
  54. printf("AVISO: (No es posible modo oculto con clave externa) (2)\n ");
  55. printf("1: Para modo clave consola.\n 2: para clave externa (-pass clave) \n 0: sin clave");
  56. scanf("%d" ,&clave);
  57. EnterLimp();
  58. clrScr();
  59.  
  60. // Modo clave 1
  61. if( clave== 1 ){
  62. Mensaje();
  63.    printf("\nLa clave de mas de 3 caracteres: ");
  64.    scanf("%s",cmb);
  65. EnterLimp();
  66. }
  67. // Modo clave 2
  68. if( clave== 2 ){
  69. Mensaje();
  70.    printf("\nLa clave: ");
  71.    scanf("%s",cmb);
  72. EnterLimp();
  73. }
  74. clrScr();
  75.  
  76. //Modo "oculto"
  77. if( clave== 2 ){
  78. Mensaje();
  79. printf("No es posible modo oculto con clave externa\n");
  80. printf("Enter para continuar\n");
  81. getchar(); //pausa multiplataforma
  82. }else{
  83. Mensaje();
  84. printf("Para modo oculto escriba 1 (solo windows) o 0 para normal : ");
  85. scanf("%d" ,&oculto);
  86. EnterLimp();
  87. }
  88. clrScr();
  89. /*
  90. //Concatenado
  91. Mensaje();
  92.     printf("\nMetodo de concatenado : ");
  93.     printf("\n1 para metodo modo inteligente (beta) : ");
  94.     scanf("%d",&concatenado);
  95. EnterLimp();
  96.  
  97. clrScr();
  98. */
  99. //Codigos
  100. fp = fopen(filename,"w");
  101.    if (fp==NULL)
  102.    {
  103.     printf("Ocurrio un error al intentar abrir el archivo");
  104.     getchar();
  105.     exit(1);
  106.    }
  107.    else
  108.    {
  109. // includes normales
  110. fprintf(fp,"#include <stdio.h>\n");
  111.        fprintf(fp,"#include <stdlib.h>\n");
  112. if( clave== 2 ){
  113. fprintf(fp,"#include <string.h>\n");
  114. }
  115. if( oculto== 1 ){
  116. // modo oculto
  117.        fprintf(fp,"#include <windows.h>\n");
  118. }
  119.  
  120. if( oculto== 1 ){
  121.        fprintf(fp,"int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\n");
  122.        fprintf(fp,"PSTR szCmdLine, int iCmdShow)\n");
  123. }
  124. // int argc, char **argv
  125. fprintf(fp,"int main( int argc, char **argv)\n");
  126.        fprintf(fp,"{\n");
  127.  
  128. if( clave== 1 ){
  129. // modo clave
  130.  
  131.        fprintf(fp,"\nchar clave[6];\n");
  132.        fprintf(fp,"printf(\"Escriba su clave: \");\n");
  133.        fprintf(fp,"scanf(\"%%s\",clave);\n");
  134.        fprintf(fp,"if(strcmp(clave,\"%s\")==0)\n",cmb);
  135.        fprintf(fp,"{\n");
  136. }
  137. if( clave== 2 ){
  138. // modo consola
  139.        fprintf(fp,"\tchar clave[21];\n");
  140.        fprintf(fp,"\tchar clave2[21] = \"%s\";\n",cmb);
  141.        fprintf(fp,"\tif ( argc < 3 ) {\n");
  142.        fprintf(fp,"\tprintf(\"USO: programa -pass clave\");\n");
  143.        fprintf(fp,"\treturn 1;\n");
  144.        fprintf(fp,"}\n");
  145.        fprintf(fp,"\tif ( !strcmp( argv[1], \"-pass\" ) ) {\n");
  146.        fprintf(fp,"\tstrncpy( clave, argv[2], 20 );\n");
  147.        fprintf(fp,"\tclave[21] = '\\0';\n");
  148.        fprintf(fp,"}\n");
  149.        fprintf(fp,"\telse\n");
  150.        fprintf(fp,"return 1;\n");
  151.        fprintf(fp,"\n");
  152.        fprintf(fp,"\tif ( !strcmp(clave, clave2) )\n");
  153.        fprintf(fp,"{\n");
  154. }
  155. clrScr();
  156.  
  157. Mensaje();
  158.  
  159.        printf("\nComience a escribir los comandos : \n");
  160.        printf("Cuando finalice, ecriba 'FIN' para terminar\n");
  161.        printf("\nComandos :\n\n");
  162.  
  163.        gets(cmd);
  164.        while (1)
  165.        {
  166.  
  167. fgets( cmd, 150, stdin );
  168. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  169.  
  170. while (!strcmp(cmd,"PAUSE\>NUL"))
  171. {
  172. fprintf(fp,"\tgetchar();\n");
  173. fgets( cmd, 150, stdin );
  174. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  175.                 }
  176.  
  177. while (!strcmp(cmd,"PAUSE"))
  178. {
  179. fprintf(fp,"\tprintf(\"Presione una tecla para continuar.\");\n");
  180. fprintf(fp,"\tgetchar();\n");
  181. fgets( cmd, 150, stdin );
  182. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  183.                 }
  184. if (!strcmp(cmd,"FIN"))
  185.                 {
  186.                 break;              //if end is typed, get out of loop
  187.                 }
  188.              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  189. }
  190. if( clave== 0 ){
  191.        fprintf(fp,"}");
  192. }
  193.  
  194. if( clave== 1 ){
  195. // modo clave
  196.        fprintf(fp,"\t}\nelse\n{\n");
  197.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  198.        fprintf(fp,"\treturn 0;\n}");
  199. }
  200.  
  201. if( clave== 2 ){
  202. // modo clave
  203.        fprintf(fp,"\t}\nelse\n{\n");
  204.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  205.        fprintf(fp,"\treturn 0;\n}");
  206. }
  207. fclose(fp);
  208.    }
  209. }


Código que funciona perfectamente y es similar:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5. int main()
  6. {
  7. char *cPtr;
  8.  
  9.    FILE *fp;
  10.    char filename[30];
  11.    char incs[200] = "#include <stdio.h>\n#include <stdlib.h>\nint main()\n{\n";
  12.    char end[50] = "}\n";
  13.    char cmd[150];
  14.  
  15.    printf("\nArchivo a crear: ");
  16.    scanf("%s",filename);
  17.    fp = fopen(filename,"w");
  18.    if (fp==NULL)
  19.    {
  20.     printf("Some error occurred while opening file");
  21.     getchar();
  22.     exit(1);
  23.    }
  24.    else
  25.    {
  26.        fprintf(fp,"%s",incs);
  27.  
  28.        printf("\nIngrese sus codigos: \n");
  29.  
  30.        gets(cmd);
  31.        while (1)
  32.        {
  33. fgets( cmd, 150, stdin );
  34. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  35.  
  36. while (!strcmp(cmd,"PAUSE\>NUL"))
  37. {
  38. fprintf(fp,"\tgetchar();\n");
  39. fgets( cmd, 150, stdin );
  40. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  41.                 }
  42.  
  43. while (!strcmp(cmd,"PAUSE"))
  44. {
  45. fprintf(fp,"\tprintf(\"Presione una tecla para continuar.\");\n");
  46. fprintf(fp,"\tgetchar();\n");
  47. fgets( cmd, 150, stdin );
  48. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  49.                 }
  50. if (!strcmp(cmd,"FIN"))
  51.                 {
  52.                 break;
  53.                 }
  54.              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  55. }
  56.  
  57.        fprintf(fp,"\n%s",end);
  58.  
  59.        fclose(fp);
  60.    }
  61.    getchar();
  62. }

Lo que pasa es que en el ultimo me devuelve el código perfectamente y el primero de todos, ese es el que falla y no se porque, funciona pero se saltea las lineas, aveces anda otras no ¿Se le puede hacer algo?.

SOLUCIONADO Y CORREGIDO UN POCO.

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. // Limpiador de pantalla
  7. void clrScr()
  8. {
  9. //Windows/Linux
  10. if (system("CLS")) system("clear");
  11. /* Modo realmente multiplataforma (malo).
  12.     int n;
  13.     for (n = 0; n < 10; n++)
  14.     printf( "\n\n\n\n\n\n\n\n\n\n\n\n\n" );
  15. */
  16. }
  17.  
  18. // Mensaje "propagandistico"
  19. void Mensaje()
  20. {
  21. printf("\t+----------------------------+\n");
  22.    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  23.    printf("\t+----------------------------+\n");
  24. }
  25. // Limpiador de ENTER
  26. void EnterLimp()
  27. {
  28. while ( getchar() != '\n' );    /* limpia el caracter ENTER de la entrada estandar */
  29. }
  30.  
  31. int main()
  32. {
  33. int oculto;
  34. int clave;
  35.  
  36.    FILE *fp;
  37. char *cPtr;
  38.    char filename[30];          //filename for source code
  39.    //for command
  40.    char cmd[150];
  41.    //la clave
  42.    char cmb[350];
  43.  
  44. // Nombre archivo final
  45. Mensaje();
  46. printf("\nEntre el nombre que le quiere dar al codigo saliente(.c): ");
  47. scanf("%s",filename);
  48. EnterLimp();
  49.  
  50. clrScr();
  51.  
  52. // Tipo de clave
  53. Mensaje();
  54. printf("AVISO: (No es posible modo oculto con clave externa) (2)\n ");
  55. printf("1: Para modo clave consola.\n 2: para clave externa (-pass clave) \n 0: sin clave:\n\t");
  56. scanf("%d" ,&clave);
  57. EnterLimp();
  58. clrScr();
  59.  
  60. // Modo clave 1
  61. if( clave== 1 ){
  62. Mensaje();
  63.    printf("\nLa clave de mas de 3 caracteres: ");
  64.    scanf("%s",cmb);
  65. EnterLimp();
  66. clrScr();
  67. }
  68. // Modo clave 2
  69. if( clave== 2 ){
  70. Mensaje();
  71.    printf("\nLa clave: ");
  72.    scanf("%s",cmb);
  73. EnterLimp();
  74.  
  75. clrScr();
  76.  
  77. //Modo "oculto"
  78. Mensaje();
  79. printf("No es posible modo oculto con clave externa\n");
  80. printf("Enter para continuar\n");
  81. getchar(); //pausa multiplataforma
  82. }else{
  83. Mensaje();
  84. printf("Para modo oculto escriba 1 (solo windows) o 0 para normal : ");
  85. scanf("%d" ,&oculto);
  86. EnterLimp();
  87. }
  88. clrScr();
  89. /*
  90. //Concatenado
  91. Mensaje();
  92.     printf("\nMetodo de concatenado : ");
  93.     printf("\n1 para metodo modo inteligente (beta) : ");
  94.     scanf("%d",&concatenado);
  95. EnterLimp();
  96.  
  97. clrScr();
  98. */
  99. //Codigos
  100. fp = fopen(filename,"w");
  101.    if (fp==NULL)
  102.    {
  103.     printf("Ocurrio un error al intentar abrir el archivo");
  104.     getchar();
  105.     exit(1);
  106.    }
  107.    else
  108.    {
  109. // includes normales
  110. fprintf(fp,"#include <stdio.h>\n");
  111.        fprintf(fp,"#include <stdlib.h>\n");
  112. if( clave== 2 ){
  113. fprintf(fp,"#include <string.h>\n");
  114. }
  115. if( oculto== 1 ){
  116. // modo oculto
  117.        fprintf(fp,"#include <windows.h>\n");
  118. }
  119.  
  120. if( oculto== 1 ){
  121.        fprintf(fp,"int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\n");
  122.        fprintf(fp,"PSTR szCmdLine, int iCmdShow)\n");
  123. }
  124. // int argc, char **argv
  125. fprintf(fp,"int main( int argc, char **argv)\n");
  126.        fprintf(fp,"{\n");
  127.  
  128. if( clave== 1 ){
  129. // modo clave
  130.  
  131.        fprintf(fp,"\nchar clave[6];\n");
  132.        fprintf(fp,"printf(\"Escriba su clave: \");\n");
  133.        fprintf(fp,"scanf(\"%%s\",clave);\n");
  134.        fprintf(fp,"if(strcmp(clave,\"%s\")==0)\n",cmb);
  135.        fprintf(fp,"{\n");
  136. }
  137. if( clave== 2 ){
  138. // modo consola
  139.        fprintf(fp,"\tchar clave[21];\n");
  140.        fprintf(fp,"\tchar clave2[21] = \"%s\";\n",cmb);
  141.        fprintf(fp,"\tif ( argc < 3 ) {\n");
  142.        fprintf(fp,"\tprintf(\"USO: programa -pass clave\");\n");
  143.        fprintf(fp,"\treturn 1;\n");
  144.        fprintf(fp,"}\n");
  145.        fprintf(fp,"\tif ( !strcmp( argv[1], \"-pass\" ) ) {\n");
  146.        fprintf(fp,"\tstrncpy( clave, argv[2], 20 );\n");
  147.        fprintf(fp,"\tclave[21] = '\\0';\n");
  148.        fprintf(fp,"}\n");
  149.        fprintf(fp,"\telse\n");
  150.        fprintf(fp,"return 1;\n");
  151.        fprintf(fp,"\n");
  152.        fprintf(fp,"\tif ( !strcmp(clave, clave2) )\n");
  153.        fprintf(fp,"{\n");
  154. }
  155. clrScr();
  156.  
  157. Mensaje();
  158.  
  159.        printf("\nComience a escribir los comandos : \n");
  160.        printf("Cuando finalice, ecriba 'FIN' para terminar\n");
  161.        printf("\nComandos :\n\n");
  162.  
  163.        while (1)
  164.        {
  165. fgets( cmd, 150, stdin );
  166. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  167.  
  168. while (!strcmp(cmd,"PAUSE\>NUL"))
  169. {
  170. fprintf(fp,"\tgetchar();\n");
  171. fgets( cmd, 150, stdin );
  172. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  173.                 }
  174.  
  175. while (!strcmp(cmd,"PAUSE"))
  176. {
  177. fprintf(fp,"\tprintf(\"Presione una tecla para continuar.\");\n");
  178. fprintf(fp,"\tgetchar();\n");
  179. fgets( cmd, 150, stdin );
  180. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  181.                 }
  182. if (!strcmp(cmd,"FIN"))
  183.                 {
  184.                 break;              //if end is typed, get out of loop
  185.                 }
  186.              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  187. }
  188. if( clave== 0 ){
  189.        fprintf(fp,"}");
  190. }
  191.  
  192. if( clave== 1 ){
  193. // modo clave
  194.        fprintf(fp,"\t}\nelse\n{\n");
  195.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  196.        fprintf(fp,"\treturn 0;\n}");
  197. }
  198.  
  199. if( clave== 2 ){
  200. // modo clave
  201.        fprintf(fp,"\t}\nelse\n{\n");
  202.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  203.        fprintf(fp,"\treturn 0;\n}");
  204. }
  205. fclose(fp);
  206.    }
  207. }

El error era muy básico, había utilizado un gets en donde no tenia que estar antes del bucle, lo elimine y el problema esta resuelto.
12  Programación / Programación C/C++ / [Ayuda] separar cadena en partes en: 8 Enero 2015, 03:49 am
Bueno, les explico soy muy pero muy novato en C  :-[ y me puse a "mejorar", un poco un código de batch a C, que en realidad solo llama al system, y la verdad es que ahora quiero que traduzca muy básico por ejemplo tengo en batch:

Código:
set pepe=hola
echo %pepe%

que en c seria algo asi

Código:
#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main()
{
char pepe[21] = hola;
printf(pepe);
return 0;
}

O
Código:
echo HOLA MUNDO

que en c seria algo asi

Código:
#include <stdio.h>

int main()
{
printf("HOLA MUNDO");
return 0;
}

intente con memcpy y no entiendo muy bien solo necesitaría separar por ejemplo set "variable" = "valor", si sale vamos por linux.

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4.  
  5. #ifdef __cplusplus__
  6.  #include <cstdlib>
  7. #else
  8.  #include <stdlib.h>
  9. #endif
  10.  
  11. // Limpiador de pantalla
  12. void clrScr()
  13. {
  14. if (system("CLS")) system("clear");
  15. }
  16.  
  17. // Mensaje "propagandistico"
  18. void Mensaje()
  19. {
  20. printf("\t+----------------------------+\n");
  21.    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  22.    printf("\t+----------------------------+\n");
  23. }
  24. // Limpiador de ENTER
  25. void EnterLimp()
  26. {
  27. while ( getchar() != '\n' );    /* limpia el caracter ENTER de la entrada estandar */
  28. }
  29.  
  30. int main()
  31. {
  32. int oculto;
  33. int clave;
  34. int concatenado;
  35.  
  36.    FILE *fp;
  37. char *cPtr;
  38.    char filename[30];          //filename for source code
  39.    //end part of output file
  40.    char end[50] = "\treturn 0;\n}";
  41.    //for command
  42.    char cmd[150];
  43.    //la clave
  44.    char cmb[350];
  45.  
  46. // Nombre archivo final
  47. Mensaje();
  48. printf("\nEntre el nombre que le quiere dar al codigo saliente(.c): ");
  49. scanf("%s",filename);
  50. EnterLimp();
  51.  
  52. clrScr();
  53.  
  54. // Tipo de clave
  55. Mensaje();
  56. printf("AVISO: (No es posible modo oculto con clave externa) (2) \n ");
  57. printf("Para modo clave escriba 1 o 2 para clave externa (-pass clave) : ");
  58. scanf("%d" ,&clave);
  59. EnterLimp();
  60. clrScr();
  61.  
  62. // Modo clave 1
  63. if( clave== 1 ){
  64. Mensaje();
  65.    printf("\nLa clave de mas de 3 caracteres: ");
  66.    scanf("%s",cmb);
  67. EnterLimp();
  68. }
  69. // Modo clave 2
  70. if( clave== 2 ){
  71. Mensaje();
  72.    printf("\nLa clave: ");
  73.    scanf("%s",cmb);
  74. EnterLimp();
  75. }
  76. clrScr();
  77.  
  78. //Modo "oculto"
  79. if( clave== 2 ){
  80. Mensaje();
  81. printf("No es posible modo oculto con clave externa\n");
  82. printf("Enter para continuar\n");
  83. getchar(); //pausa multiplataforma <3
  84. }else{
  85. Mensaje();
  86. printf("Para modo oculto escriba 1 (solo windows) o 0 para normal : ");
  87. scanf("%d" ,&oculto);
  88. EnterLimp();
  89. }
  90. clrScr();
  91.  
  92. //Concatenado
  93. Mensaje();
  94.    printf("\nMetodo de concatenado : ");
  95.    printf("\n1 para metodo modo inteligente (beta) : ");
  96.    scanf("%d",&concatenado);
  97. EnterLimp();
  98.  
  99. clrScr();
  100.  
  101. //Codigos
  102. fp = fopen(filename,"w");
  103.    if (fp==NULL)
  104.    {
  105.     printf("Ocurrio un error al intentar abrir el archivo");
  106.     getchar();
  107.     exit(1);
  108.    }
  109.    else
  110.    {
  111. // includes normales
  112. fprintf(fp,"#include <stdio.h>\n");
  113.        fprintf(fp,"#include <stdlib.h>\n");
  114. if( clave== 2 ){
  115. fprintf(fp,"#include <string.h>\n");
  116. }
  117. if( oculto== 1 ){
  118. // modo oculto
  119.        fprintf(fp,"#include <windows.h>\n");
  120. }
  121.  
  122. if( oculto== 1 ){
  123.        fprintf(fp,"int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\n");
  124.        fprintf(fp,"PSTR szCmdLine, int iCmdShow)\n");
  125. }
  126. // int argc, char **argv
  127. fprintf(fp,"int main( int argc, char **argv)\n");
  128.        fprintf(fp,"{\n");
  129.  
  130.  
  131. /* A solucionar...
  132. if( clave== 2 ){
  133. // int argc, char **argv
  134. fprintf(fp,"int main( int argc, char **argv)\n");
  135.         fprintf(fp,"{\n");
  136. }else{
  137. // normal
  138.         fprintf(fp,"int main()\n");
  139.         fprintf(fp,"{\n");
  140. } */
  141.  
  142. if( clave== 1 ){
  143. // modo clave
  144.  
  145.        fprintf(fp,"\nchar clave[6];\n");
  146.        fprintf(fp,"printf(\"Escriba su clave: \");\n");
  147.        fprintf(fp,"scanf(\"%%s\",clave);\n");
  148.        fprintf(fp,"if(strcmp(clave,\"%s\")==0)\n",cmb);
  149.        fprintf(fp,"{\n");
  150. }
  151. if( clave== 2 ){
  152. // modo consola
  153.        fprintf(fp,"\tchar clave[21];\n");
  154.        fprintf(fp,"\tchar clave2[21] = \"%s\";\n",cmb);
  155.        fprintf(fp,"\tif ( argc < 3 ) {\n");
  156.        fprintf(fp,"\tprintf(\"USO: programa -pass clave\");\n");
  157.        fprintf(fp,"\treturn 1;\n");
  158.        fprintf(fp,"}\n");
  159.        fprintf(fp,"\tif ( !strcmp( argv[1], \"-pass\" ) ) {\n");
  160.        fprintf(fp,"\tstrncpy( clave, argv[2], 20 );\n");
  161.        fprintf(fp,"\tclave[21] = '\\0';\n");
  162.        fprintf(fp,"}\n");
  163.        fprintf(fp,"\telse\n");
  164.        fprintf(fp,"return 1;\n");
  165.        fprintf(fp,"\n");
  166.        fprintf(fp,"\tif ( !strcmp(clave, clave2) )\n");
  167.        fprintf(fp,"{\n");
  168. }
  169. clrScr();
  170.  
  171. if( concatenado== 1 ){
  172. // concatenado
  173. fprintf(fp,"\tchar shin[1000];\n");
  174. fprintf(fp,"\tstrcpy (shin,\"\");\n");
  175.  
  176. Mensaje();
  177.  
  178.        printf("\nComience a escribir los comandos : \n");
  179.        printf("Cuando finalice, ecriba 'end' para terminar\n");
  180.  
  181.        printf("\nComandos :\n\n");
  182.  
  183. fgets( cmd, 150, stdin );
  184. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  185.  
  186. while ( strcmp( cmd, "end" ) )
  187. {
  188.         fprintf(fp,"\tstrcat (shin,\"%s && \");\n",cmd);
  189.         fgets( cmd, 150, stdin );
  190.         if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  191. }
  192.        fprintf(fp,"\tstrcat (shin,\"exit\");\n");
  193. fprintf(fp,"\tsystem(shin);\n");
  194. fprintf(fp,"\tprintf(\"\\n\");\n");
  195. }else{
  196.  
  197. //Normal
  198. Mensaje();
  199.  
  200.        printf("\nComience a escribir los comandos : \n");
  201.        printf("Cuando finalice, ecriba 'end' para terminar\n");
  202.  
  203.        printf("\nComandos :\n\n");
  204.  
  205. fgets( cmd, 150, stdin );
  206. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  207.  
  208. while ( strcmp( cmd, "end" ) )
  209. {
  210.         fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  211.         fgets( cmd, 150, stdin );
  212.  
  213.         if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  214. }
  215. fprintf(fp,"\tprintf(\"\\n\");\n");
  216. }
  217.  
  218. if( clave== 1 ){
  219. // modo clave
  220.        fprintf(fp,"\t}\nelse\n{\n");
  221.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  222. }
  223.  
  224. if( clave== 2 ){
  225. // modo clave
  226.        fprintf(fp,"\t}\nelse\n{\n");
  227.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  228. }
  229.  
  230.        fprintf(fp,"\n%s",end);
  231.  
  232. clrScr();
  233.  
  234.  
  235.    fclose(fp);
  236.    }
  237. }
13  Programación / Programación C/C++ / [Solucionado] Parametros desde consola en: 2 Enero 2015, 04:07 am
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  
  6. char clave[6];
  7. printf("Escriba su clave: ");
  8. scanf("%s",clave);
  9. if(strcmp(clave,"passbasico")==0)
  10. {
  11. system("echo sencillo a ejecutar");
  12. printf("\n");
  13. }
  14. else
  15. {
  16. printf("Clave no valida");
  17. }
  18.  
  19. return 0;
  20. }

Hola soy nuevo en C y quisiera hacer algo así pero que en vez de que sea desde el mismo programa se pueda poner un parámetro externo "-pass passbasico" desde una consola por ejemplo.
14  Programación / Programación C/C++ / Codigo de fuente del GTA SA ¿Sera verdad? en: 27 Diciembre 2014, 02:06 am
https://github.com/jte/GTASA

¿Sera cierto? ¿ se puede compilar esto?

15  Programación / Programación C/C++ / [Ayuda] variable dentro de char (solucionado) en: 24 Diciembre 2014, 00:37 am
Esta probando, ya que hace poco aprendí a dominar el batch bastante bien (te debes estar riendo), modificar, entender un poco el lenguaje C/C++ y me resulto excelente, cada paso que daba me daban mas ganas de aprenderlo, una especie de retroalimentacion positiva, y bueno voy por lo basico ahora, editar un "source" que tenia por alli de ejemplo y la verdad que me quede en:

Código:
    char header[300] = ("\nCodigo creado por %d\n", creador);

no logro entender que es lo que hice mal que cuando lo compilo con g++, da error, si me dicen que es lo que hice mal me dan una gran ayuda que espero que me ayude en el futuro

Tengo entendido que d es para numero pero es solo para ejemplo

Código:
/*********************************************
* Batch DOS To C Source Code Converter v.1.1 *
* Coded by Samar Dhwoj Acharya aka $yph3r$am *
* Website => http://sampctricks.blogspot.com *
* E-mail meh at samar_acharya[at]hotmail.com *
* Contact meh at +9779841150346 (NTC <a href="http://cityadspix.com/tsclick-MIQCWPUV-GECAQBFF?url=http%3A%2F%2Fwww.sotmarket.ru%2Fproduct%2Fsandisk-microsdxc-64gb-class-10-ultra-sd-adapter.html&sa=mh&sa1=&sa2=&sa3=&sa4=&sa5=&bt=20&pt=9&lt=2&tl=3&im=ODI1LTAtMTQxOTM3ODQyMC0xNzQ0OTE1Ng%3D%3D&fid=NDQ1NzU2Nzc1&prdct=0a3e083f0a3b0a3d0a&kw=mobile)%20*%0A*%20I" target="_blank" alt="Mobile Ultra microSDXC UHS-I 64GB" title="Mobile Ultra microSDXC UHS-I 64GB" style="">mobile) *
* I</a> know to code: PHP, PERL, C, JAVA, PYTHON, ASM *
*********************************************/
/*
Some Notes:
     -The program was created in real hurry in between end term exams
     -So the program lacks all buffer overflow protections and optimization form
     -The code can be modified but please don't change the credits for the file
     -If you come up with better idea of implementing it in C, please contact me
     -If you feel program is complete crap, do comment me personally or here
     -If you loved my coding, I feel really glad for that.
     -If you need to understand the coding(in fact, its just easy), contact me..
     - Visit my site http://www.sampctricks.blogspot.com and my group site http://www.nepsecvulns.blogspot.com
*/

//include header files...
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main(){
   int creador;

    FILE *fp;
    char filename[30];          //filename for source code

    // starting header of outputted file
    char header[300] = ("\nCodigo creado por %d\n", creador);
    
    //all the includes in output file
    char incs[200] = "#include <stdio.h>\n#include <conio.h>\n#include <stdlib.h>\n#include <windows.h>\nint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\nPSTR szCmdLine, int iCmdShow)\n{\n";
    
    //end part of output file
    char end[50] = "\treturn 0;\n}";
    
    //for command
    char cmd[150];
    
    
    printf("\t+----------------------------+\n");
    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
    printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
    printf("\t+----------------------------+\n");
    
      printf("Introduce el nombre del creador ");
      scanf("%d", &creador);

    printf("\nEnter the filename(with .c extension): ");
    scanf("%s",filename);

    fp = fopen(filename,"w");
    if (fp==NULL)
    {
     printf("Some error occurred while opening file");
     getch();
     exit(1);
    }
    else
    {
        fprintf(fp,"%s%s",header,incs);
        
        printf("\nNow start entering DOS commands: \n");
        printf("When finished, type 'end' for the end of commands\n");

        printf("\nStart:\n\n");
        
        gets(cmd);
        while (1)
        {
              gets(cmd);
              if (!strcmp(cmd,"end"))
                 {
                 break;              //if end is typed, get out of loop
                 }
              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
        }
        fprintf(fp,"\tprintf(\"\\n\");");
        
        fprintf(fp,"\n%s",end);
        
        printf("\n\nFile successfully created");
        printf("\nNow compile it with any C compiler");
        printf("\nThanks for using this little app");
        fclose(fp);
    }
    getch();
}      


EDITO:
CODIGO SOLUCIONADO, No a la perfección pero resuelto, gracias mod y a Yoel que ya me pongo a implementar tu código.

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <string.h>
  6. int main()
  7. {
  8.    FILE *fp;
  9.    char filename[30];          //filename for source code
  10.  
  11.    // starting header of outputted file
  12.    char header[300] = "/*\nBatch DOS command To C source Converter\nBy sam207 (samar_acharya[at]hotmail.com)\nhttp://www.sampctricks.blogspot.com\nhttp://nepali.netau.net\n*/\n";
  13.  
  14.    //all the includes in output file
  15.    char incs[200] = "#include <stdio.h>\n#include <conio.h>\n#include <stdlib.h>\n#include <windows.h>\nint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\nPSTR szCmdLine, int iCmdShow)\n{\n";
  16.  
  17.    //end part of output file
  18.    char end[50] = "\treturn 0;\n}";
  19.  
  20.    //for command
  21.    char cmd[150];
  22.  
  23.    //para el resto, la clave
  24.    char cmb[350];
  25.  
  26.    printf("\t+----------------------------+\n");
  27.    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  28.    printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
  29.    printf("\t+----------------------------+\n");
  30.  
  31.    printf("\nEnter the filename(with .c extension): ");
  32.    scanf("%s",filename);
  33.  
  34.    printf("\nContraseña: ");
  35.    scanf("%s",cmb);
  36.  
  37.    fp = fopen(filename,"w");
  38.    if (fp==NULL)
  39.    {
  40.     printf("Some error occurred while opening file");
  41.     getch();
  42.     exit(1);
  43.    }
  44.    else
  45.    {
  46.        fprintf(fp,"%s%s",header,incs);
  47.        fprintf(fp,"char clave[6];\n");
  48.        fprintf(fp,"printf(\"escriba su clave: \");\n");
  49.        fprintf(fp,"scanf(\"%%s\",clave);\n");
  50.        fprintf(fp,"if(strcmp(clave,\"%s\")==0)\n",cmb);
  51.        fprintf(fp,"{\n");
  52.  
  53.        printf("\nNow start entering DOS commands: \n");
  54.        printf("When finished, type 'end' for the end of commands\n");
  55.  
  56.        printf("\nStart:\n\n");
  57.  
  58.        gets(cmd);
  59.        while (1)
  60.        {
  61.              gets(cmd);
  62.              if (!strcmp(cmd,"end"))
  63.                 {
  64.                 break;              //if end is typed, get out of loop
  65.                 }
  66.              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  67.  
  68.        }
  69.        fprintf(fp,"\tprintf(\"\\n\");\n");
  70.        fprintf(fp,"\t}\nelse\n{\n");
  71.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  72.  
  73.        fprintf(fp,"\n%s",end);
  74.  
  75.        printf("\n\nFile successfully created");
  76.        printf("\nNow compile it with any C compiler");
  77.        printf("\nThanks for using this little app");
  78.        fclose(fp);
  79.    }
  80.    getch();
  81. }      

16  Programación / Scripting / [Ayuda] Se queda sin valor la variable en: 9 Diciembre 2014, 22:43 pm
Muchas gracias por visitar.

Hace mucho había visto este código muy bueno:
Código:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%x in ('type texto.txt') do (
set linea=%%x
set linea=!linea:Perl=C!
call :show !linea!
)
goto:eof
:show
echo %* >> out.txt
goto:eof

Y lo pensé usar en este código para ripear juegos que funciona de forma excelente.

Código:
@echo off
::Sistema MP3 a OGG::
::Variables::
::Extension::
::Entra (diseñado para MP3)
set mp3int=mp3
::Wav (temporal)
set tempwav=wavtmp
::Sale (diseñado para OGG)
set oggext=mp3.ogg
::Calidad::
set configogg=-q 2.50
::Codigo
setlocal enabledelayedexpansion
for /R %%x in (*.%mp3int%) do (
set linea=%%x
set linea=!linea:.mp3=!
call :show !linea!
)
goto:eof
:show
lame --decode "%*.%mp3int%" "%*.%tempwav%"
oggenc2 %configogg% "%*.%tempwav%" -o "%*.%oggext%"
del "%*.%mp3int%" /s
del "%*.%tempwav%" /s
)
goto:eof

Pero hay un inconveniente... :(
Cuando paso
Código:
set linea=!linea:.mp3=!
a
Código:
set linea=!linea:.%mp3int%=!

La variable %mp3int% ya no responde ¿Como puedo solucionar esto?.

Muchas gracias, agradecido con ustedes por siempre...


17  Seguridad Informática / Bugs y Exploits / [Bug] CMD Se crashea con un codigo en: 8 Diciembre 2014, 01:42 am
Miren la debilidad que acabo de encontrar si se pone este codigo:
Código:
    for /R %%a in (*.*) do ("%%a")
Se crashea el CMD, probado en Win 7 Ultimate x64. Al parecer se genera un bluce infinito.

Necesito que lo prueben en windows diefrentes
Aclaro:
-No funciona desde CMD.
-Solo va desde batch.
-Solo con que este el mismo script aislado en una carpeta ya se buguea.
18  Media / Multimedia / [Ayuda] Webm a mp4 y viceversa, necesito las herramientas en: 5 Diciembre 2014, 02:49 am
No consigo por ningún lado las herramientas de WebM, las necesito, para el ripeo de juegos.
19  Programación / .NET (C#, VB.NET, ASP) / [Ayuda] Como puedo pasar un batch a VB 10 en: 5 Diciembre 2014, 02:47 am
Código:
::Sistema de UPX::
::Variables::
::Configuracion de compresion::
set param=--best
::Codigo
for /R %%x in (*.*) do (
upx.exe "%param%" "%%x"
)

O sino ayúdenme a hacer esto nomas, lo de las variables no es tan importante, ya que para el uso que le voy a dar es inútil.

Código:
::Funcionamiento
::Lista todos los archivos de las subcarpetas y los guarda en la variable "%%x"
for /R %%x in (*.*) do (
upx.exe --best "%%x"
)

Ese no es el codigo completo, solo pido una ayuda para empezar por favor.
20  Comunicaciones / Android / Nesesito modificar cosas KitKat x86 PC desde Windows en: 14 Marzo 2014, 17:10 pm
Instale android KitKat 86 en mi pc pero no se como abrir el System.img desde mi PC ni como se hacer una Rom personalizada, ¿Que me recomiendan para editar desde windows, tampoco se puede desde Android, a pesar de estar rooteado.
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines