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 Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: unir cadenas mediante punteros en: 3 Noviembre 2011, 20:38 pm
Citar
si funciona pero me salen unos simbolos raros en la consola jejeje.
        Ingrese cadena:MAR
   Ingrese cadena:TIN
   [MARTINg����]

Tienes que agregarle el caracter nulo a la cadena.

Código
  1. lg=largo1+largo2;
  2. char largos[lg];int i=0;

Segun recordaba no se puede inicializar variables de esa forma con una variable como indice, por lo menos a mi en mi IDE no me lo permite.

Hace un tiempo hice una funcion para unir cadenas mucho mas pequeña:

Código
  1. int main()
  2. {
  3.  
  4. char s1[23] = "Hola como le va ";
  5. char s2[6] = "Mundo";
  6.  
  7. _strcat(s1, s2);
  8. printf("%s", s1);
  9.  
  10. return 0;
  11. }
  12.  
  13. void _strcat(char* str1, char* str2)
  14. {
  15. while(*str1)
  16. *str1++ = *str1;
  17. while(*str2)
  18. *str1++ = *str2++;
  19. *str1 = '\0';
  20. }

El resultado se guarda en str1  :P.
2  Programación / Programación C/C++ / [C] Funciones para manejar procesos en: 7 Octubre 2011, 02:20 am
Bueno he estado aprendiendo a trabajar en C pero por cuestiones de tiempo lo habia dejado pero ahora que tuve tiempo hice estas simples funciones para manejar procesos de Windows para practicar y aprender  :P.

Procesos.h:

Código
  1. #ifndef __PROCESOS__
  2. #define __PROCESOS__
  3.  
  4. #include <windows.h>
  5. #include <tlhelp32.h>
  6.  
  7. int EnumProc();
  8. char **ListarProc();
  9. int obtPid(char* Proc);
  10. int TerminarProc(char* Proc);
  11.  
  12. #endif

Procesos.cpp

Código
  1. /*
  2. Autor: .::DoX::.
  3. Fecha: 06/10/2011 - 06:00 PM
  4. */
  5.  
  6. #include "Procesos.h"
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. void wCharToChar(WCHAR *wchar, char* dest);
  11.  
  12. int EnumProc()
  13. {
  14. int i = -1;
  15. HANDLE hSnap;
  16. PROCESSENTRY32 Proceso;
  17.  
  18. hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  19. Proceso.dwSize = sizeof(PROCESSENTRY32);
  20. Process32First(hSnap, &Proceso);
  21. do { i++; }while(Process32Next(hSnap, &Proceso));
  22. CloseHandle(hSnap);
  23.  
  24. return i;
  25. }
  26.  
  27. char **ListarProc()
  28. {
  29. char** tmp;
  30. char aux[260];
  31. int i = 0;
  32. HANDLE hSnap;
  33. PROCESSENTRY32 Proceso;
  34.  
  35. hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  36. Proceso.dwSize = sizeof(PROCESSENTRY32);
  37. Process32First(hSnap, &Proceso);
  38.  
  39. tmp = (char**)malloc(sizeof(char*) * EnumProc());
  40.  
  41. do{
  42. wCharToChar(Proceso.szExeFile, aux);
  43. tmp[i] = (char*)malloc(sizeof(char) * strlen(aux) + 1);
  44. strcpy(tmp[i], aux);
  45. i++;
  46. }while(Process32Next(hSnap, &Proceso));
  47. CloseHandle(hSnap);
  48.  
  49. return tmp;
  50. }
  51.  
  52. void wCharToChar(WCHAR *wchar, char* dest)
  53. {
  54. while(*wchar != '\0')
  55. *dest++ = (char)*wchar++;
  56. *dest = '\0';
  57. }
  58.  
  59. int obtPid(char* Proc)
  60. {
  61.  
  62. HANDLE hSnap;
  63. PROCESSENTRY32 Proceso;
  64. char tmp[260];
  65.  
  66. hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  67. Proceso.dwSize = sizeof(PROCESSENTRY32);
  68. Process32First(hSnap, &Proceso);
  69.  
  70. do {
  71.  
  72. wCharToChar(Proceso.szExeFile, tmp);
  73.  
  74. if (!strcmp(tmp, Proc))
  75. {
  76. CloseHandle(hSnap);
  77. return Proceso.th32ProcessID;
  78. }
  79.  
  80. } while(Process32Next(hSnap, &Proceso));
  81.  
  82. CloseHandle(hSnap);
  83. return 0;
  84. }
  85.  
  86. int TerminarProc(char* Proc)
  87. {
  88.  
  89. HANDLE hProc;
  90. int Pid = obtPid(Proc);
  91.  
  92. hProc = OpenProcess(PROCESS_TERMINATE, 0, Pid);
  93. if (hProc)
  94. {
  95. if (TerminateProcess(hProc, 0))
  96. {
  97. CloseHandle(hProc);
  98. return 1;
  99. }
  100. }
  101.  
  102. CloseHandle(hProc);
  103. return 0;
  104.  
  105. }


Ejemplo de uso:

Código
  1. #include "Procesos.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7. char **a;
  8.  
  9. a = ListarProc();
  10.  
  11. for (int i=0; i<=EnumProc(); i++)
  12. printf("%d - Name: %s - PID: %d\n", i, a[i], obtPid(a[i]));
  13.  
  14. ShellExecuteA(0, NULL, "C:\\Windows\\notepad.exe", NULL, NULL, 1);
  15. Sleep(1000);
  16.  
  17. if (TerminarProc("notepad.exe"))
  18. printf("\nEl proceso se termino con exito!");
  19. else
  20. printf("Hubo un error al terminar el proceso!");
  21.  
  22. return 0;
  23. }

La función "ListarProc" lista todos los procesos abiertos y los almacena en un arreglo de cadenas; "obtPid" obtiene el PID del proceso que se le pase; TerminateProc termina el proceso que se le pase.

Salu2
3  Programación / Programación C/C++ / Re: [C] [source] Revertir Cadenas en: 18 Agosto 2011, 03:16 am
Gracias Khronos14 no se me había ocurrido de esa forma  :D
4  Programación / Programación C/C++ / [C] [source] Revertir Cadenas en: 18 Agosto 2011, 01:55 am
Hola a todos...
Bueno estoy comenzando a aprender a manejar C y he estado haciendo algunos códigos, así que aquí les dejo un pequeño código que hice para revertir el orden de una cadena.

Código
  1. char * Revertir(char *Cadena, int tam)
  2. {
  3.  
  4. int i;
  5. char *tmp;
  6.  
  7. tmp = (char*)malloc(tam);
  8.  
  9. for (i = tam - 1; i >= 0; i--)
  10. {
  11. tmp[(tam-1)-i] = Cadena[i];
  12. }
  13.  
  14. tmp[tam] = '\0';
  15.  
  16. return tmp;
  17. }


Ejemplo de uso:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char * Revertir(char *Cadena, int tam);
  6.  
  7. int main()
  8. {
  9.  
  10. char *hi = "Hola a todos";
  11. char *res;
  12.  
  13. res = Revertir(hi, strlen(hi));
  14. printf(res);
  15.  
  16.  
  17. }

Saludos  ;)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines