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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
281  Programación / Programación C/C++ / Re: headers cstdarg (stdarg.h) en: 21 Junio 2011, 01:13 am
En google hay un montón de información sobre eso. Básicamente sirve para crear funciones que no tienen un número de parámetros fijos. El ejemplo más claro es la función printf.

Para declarar una función con un número de parámetros variable, hay que usar los 3 puntos:

Código
  1. void function(int numParametros, ...)
  2.  

Y aquí tienes un pequeño ejemplo que hice:

Código
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4.  
  5. void funcion(int numParametros, ...)
  6. {
  7. va_list list; //variable de tipo va_list
  8.  
  9. va_start(list, numParametros); //iniciamos la lista de parametros y le pasamos el número
  10.  
  11. for (int i = 0; i < numParametros; i++) //recorremos la lista
  12. {
  13. char * buffer = (char*)va_arg(list, char *); //obtenemos los parámetros de izquiera a derecha
  14. puts(buffer); //escribimos
  15. }
  16.  
  17. va_end(list); //limpiamos la lista
  18. }
  19.  
  20. int main(int argc, char * argv[])
  21. {
  22. funcion(3, "hola", "que tal", "esta es una funcion con parametros");
  23. getchar();
  24. return 0;
  25. }
  26.  

Si te fijas, a la función va_arg le especifico que quiero obtener un parámetro de tipo char*, puedes especificar otros como int, double, etc..

La función printf para obtener el número de parámetros lo que hace es contar el número de % que se le pasa en la primera cadena y según la letra que le preceda obtiene de la lista un int, double, char*. En esta función de ejemplo, necesitamos especificar cuantos parámetros le pasamos.

http://www.cplusplus.com/reference/clibrary/cstdarg/va_arg/

Saludos.
282  Programación / Programación C/C++ / Re: ahorcado en: 17 Junio 2011, 23:01 pm
No me he podido parar a leer detenidamente el post que has comentado, Khronos14, así que, qué se supone que hice que no debería haber hecho? Quizá un uso excesivo de fflush?

A parte de eso, no es recomendable usar scanf. Si no lo usaras, no tendrías que hacer un fflush. El código es bastante desordenado, la función main no hay por donde cogerla, te pierdes mucho.

Para las condiciones y los bucles, si son de una sola línea no hace falta poner llaves.

Saludos.
283  Programación / Programación C/C++ / Re: ahorcado en: 17 Junio 2011, 02:07 am
Os recomiendo a los 2 que os paséis por este hilo: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Saludos.
284  Programación / Programación General / Re: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no) en: 12 Junio 2011, 22:05 pm
Si, la condición anidada es mejor. Pero yo haría otra cosa antes de hacer la condición: convierte la cadena a minúsculas o mayúsculas y así te ahorras muchas condiciones.

Saludos.
285  Programación / Programación General / Re: recorrido de una matriz de forma recursiva en: 10 Junio 2011, 23:39 pm
Código
  1. private void Recursiva(ref int [,] matriz, int x, int y)
  2.        {
  3.            if (x >= 0 && x < matriz.GetLength(0) && y >= 0 && y < matriz.GetLength(1))
  4.            {
  5.                matriz[x, y]++;
  6.  
  7.                if (x == matriz.GetLength(0) - 1)
  8.                {
  9.                    x = 0;
  10.                    y++;
  11.                }
  12.                else
  13.                    x++;
  14.  
  15.                Recursiva(ref matriz, x, y);
  16.            }
  17.        }
  18.  

Me parece una función recursiva bastante simple.

Saludos.
286  Programación / Programación General / Re: recorrido de una matriz de forma recursiva en: 10 Junio 2011, 14:49 pm
No dices en que lenguaje así que te lo pongo en Pascal:

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  SysUtils;
  7.  
  8. var
  9. x, y: integer;
  10. Matriz: array [0..9, 0..9] of integer;
  11. begin
  12.  
  13. for x := 0 to 9 do
  14.  for y := 0 to 9 do
  15.    begin
  16.      if Matriz[x, y] = 14 then
  17.        //Hacemos algo...
  18.    end;
  19. end.
  20.  

Es un bucle dentro de otro, así que recorrería todos los elementos de la matriz..

Saludos.
287  Programación / Programación C/C++ / Re: C ¿Windows? en: 6 Junio 2011, 22:44 pm
Perdon alejandro magno , que no sepa escribir correctamente , usted me podria dar una clase ?
¬¬ si vas a dar un comentario como ese mejor no lo hagas.

Akai gracias por tu comentario.

Si no sabes expresarte, la gente no te va a tomar en serio y muchas veces va a pasar de ti.

El fallo de programar en GNU/Linux es el entorno de desarrollo, ninguno le llega a la suela del zapato al Visual Studio, Delphi o C++ Builder.. Bueno, está MonoDevelop, pero aún le queda mucho que madurar..

PD: Te escribo desde mi Debian Squeeze..

Saludos.
288  Programación / Programación C/C++ / Re: C ¿Windows? en: 6 Junio 2011, 14:31 pm
A parte de lo que dijo Akai, aprende a escribir como dios manda.

"que veneficio hay?" Aquí me sangraron los ojos...
289  Programación / Programación C/C++ / Re: como ejecutar un programa en: 5 Junio 2011, 02:52 am
No dices para que sistema operativo, así que supongo que se trata de Windows. Tienes 3 funciones de la API de Windows para ejecutar un programa: CreateProcess, WinExec y ShellExecute. En msdn tienes mucha información sobre ellas y como utilizarlas.

Otra opción es utilizar la función de C system(), que se encuentra en stdlib.h.

Saludos.
290  Programación / Programación C/C++ / Problema de dependencias en: 4 Junio 2011, 11:49 am
Hola, estoy haciendo un proyecto en C# y C++ con el Visual Studio. La interfaz está hecha en C# y el "corazón" del programa está en una librería hecha en C++.

Código
  1. #include <Windows.h>
  2. //#include "core.h"
  3. #include <curl/curl.h>
  4.  
  5. extern "C" __declspec(dllexport) int StartXModule();
  6.  
  7. BOOL APIENTRY DllMain( HANDLE hModule,
  8.                        DWORD  ul_reason_for_call,
  9.                        LPVOID lpReserved )
  10. {
  11.    return TRUE;
  12. }
  13.  
  14.  
  15. int StartXModule()
  16. {
  17. curl_global_init(CURL_GLOBAL_DEFAULT);
  18. return 0;
  19. }
  20.  

La llamada de la función desde C# se hace aquí:

Código
  1. [DllImport("x-module.dll")]
  2.        private static extern int StartXModule();
  3.  
  4.        private void FMain_Load(object sender, EventArgs e)
  5.        {
  6.            PMain.BackColor = System.Drawing.ColorTranslator.FromWin32(0x00373737);
  7.            //for (int i = 0; i < 30; i++)
  8.            //    listBoxX1.Items.Add("qdwqdqw");
  9.            StartXModule();
  10.        }
  11.  

Depurando desde el Visual C# la aplicación se ejecuta correctamente, pero generando la aplicación y ejecutando directamente me da este error:

No se puede cargar el archivo DLL "x-module.dll". No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E).

Mi aplicación la forman 2 librerías (libcurl.dll y x-module.dll) y la aplicación hecha en C#. El problema creo que está en que no tiene acceso a la función curl_globla_init() llamando a StartXModule() desde C#, porque si comento esa línea, la función se carga correctamente.

Espero que me podáis ayudar.. Saludos.
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines