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


  Mostrar Mensajes
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 161
401  Programación / Programación C/C++ / Re: Obtener valor de retorno de una función antes de preprocesar en: 29 Julio 2018, 22:06 pm
Sé específico pues la explicación genérica no se entiende.
Por otra parte no se puede obtener el valor de una operación si antes no se ha hecho.
Ya te digo, expón el problema de forma más específica y a lo mejor encontramos otra forma de atacarlo.
402  Programación / Programación C/C++ / Re: Error invalid operands to binary en: 27 Julio 2018, 17:50 pm
Sin el trozo de código es difícil decir.
403  Programación / Programación C/C++ / Re: Ayuda con este programa en C en: 26 Julio 2018, 02:07 am
A mi me ha dado la impresión de que lo que quiere es saber si una fecha va antes de otra y que desconocía que con time.h se puede hacer.
404  Programación / Programación C/C++ / Re: Enums inside of Structs,compile error en: 26 Julio 2018, 02:05 am
No puedes definir enums dentro de una estructura, debes hacerlo fuera. Las estructuras son variables reunidas de forma lógica, por tanto no tiene sentido crear ese tipo de dato dentro. Lo que puedes hacer es sacarlos fuera y crear sus variables dentro del struct.
405  Programación / Programación C/C++ / Re: Ayuda con este programa en C en: 24 Julio 2018, 13:54 pm
Y qué tal si de hace con time.h, que ya tiene todo eso pensado?
406  Programación / Programación C/C++ / Re: Violación de segmento en sockets en: 17 Julio 2018, 19:39 pm
A ver, muchas cosas.
¿Estás usando C++ para compilar C?

En C no hay valores por defecto en los argumentos, así que esto
Código:
int generateRandom(int number = '1'){
está mal.

C no tiene el tipo de dato bool por defecto (tampoco false ni true), hay que incluir la librería stdbool para ello.

Inicializar cadenas:
Código:
char lxr[101];
strcat(lxr, "/home/");
strcat(lxr, user);
strcat(lxr, "/");
strcat(lxr, "readme.txt");
Todo esto se puede sustituir por una familia función de la familia printf:
Código:
char lxr[101];
sprintf(lxr, "/home/%s/readme.txt);
Por otra parte
Código:
// Global
char boot[21];
// ...
// Local en una función
strcat(boot, "/");
strcat(boot, "etc");
strcat(boot, "/");
strcat(boot, "rc.d");
strcat(boot, "/");
strcat(boot, "rc.local");
Podrías cambiarlo por
Código:
strcpy(boot, "/etc/rc.d/rc.local");
Y así reducir el tamaño del código y quede mejor a la vista. Aparte de que no pasas tanto tiempo llamando a funciones. Fíjate que que he hecho strcpy y no strcat porque aquí te salvas porque las cadenas globales se inicializan a 0. Pero si fuera una local o ya tuviera algo dentro copiaría la dirección al final de lo que hubiera causando un fallo. Usando esta técnica de strcat sucesivos asegúrate que el primero sea un strcpy.
De todas formas como sólo vas a usar esa variable de forma local puedes inicializar la variable de esta forma:
Código:
char boot[21] = "/etc/rc.d/rc.local";
Aunque también usando la característica de que en definiciones C te calcula el tamaño del array
Código:
char boot[] = "/etc/rc.d/rc.local";
Y apurando un poco más, ya que estás trabajando con una cadena literal y no vas a modificarla puedes dársela directamente a un puntero
Código:
char* boot = "/etc/rc.d/rc.local";

Código redundante:
Código:
if(remove(lxr) == 0){
    remove(lxr);
}
En el if ya has llamado a remove y dices que si ha tenido éxito en borrar lo llame otra vez.

Arrays de punteros:
Código:
void wn(void){
    char *path[432];
    strcat(*path, "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\");
}
Así no puedes construir una cadena porque cada elemento del array son punteros a char, no son char. Esto te podría dar fallos multiorgásmicos (palabro intencionado :D).

Comparar cadenas:
Código:
if (OS == "Linux"){
    lx();
}
else if (OS == "Windows"){
    wn();
}
else if (OS == "Mac"){
    mc();
}

El == no compara cadenas tipo C. Pero aquí te salvas por una característica de C: todas las cadenas literales iguales tienen una única copia en memoria y todas sus apariciones en el código apuntan al mismo sitio, así C ahorra memoria (y esta es la causa por la que una cadena literal no puede ser modificada). Por tanto si comparas dos cadenas literales, dos punteros que hayan sido definidos con la misma cadena o un de estos punteros con la misma cadena literal C devolverá cierto.
407  Programación / Programación C/C++ / Re: Código strtok en: 16 Julio 2018, 17:51 pm
Imagínate que strtok esta construida así (no es realmente así pero sirve para que veas como podría funcionar):

Código:
char* mi_strtok(char *str, const char *delim) {
    char *ret_dir;
    static char *intermedio;
    static char *fin;

    if(str) {
        ret_dir = str;
        fin = str+strlen(str)+1;
    }
    else
        ret_dir = intermedio+1;

    if(ret_dir >= fin)
        return NULL;

    intermedio = strpbrk(ret_dir, delim);
    if(intermedio)
        *intermedio = '\0';
    else
        intermedio = fin;

    return ret_dir;
}
408  Programación / Programación C/C++ / Re: como llenar un array y leer sus elementos en: 16 Julio 2018, 14:03 pm
Lo mejor es cuando consigas el primer número lo asignas a mayor y a menor, después con cada número que te den vas operando.
409  Programación / Programación C/C++ / Re: Fallo en Code::Blocks? Sistema operativo? en: 15 Julio 2018, 21:52 pm
Ups, que no pegué la dirección. Aquí va: http://www2.elo.utfsm.cl/~lsb/elo320/clases/c3.pdf
410  Programación / Programación C/C++ / Re: Fallo en Code::Blocks? Sistema operativo? en: 15 Julio 2018, 02:37 am
Te paso un documento que te irá muy bien para aprender a manejar la memoria. Es para C, pero cómo C++ está basado y es muy parecido en ese aspecto te funcionará igual para saber cómo maneja éste último la memoria.
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines