Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#411
Una unión sirve para que una misma zona de memoria pueda tener diferentes identificadores y cada uno de ellos pueden tener un tamaño diferente.

Todos empezarán en la misma dirección de memoria. La unión, el objeto en sí, tendrá el mismo tamaño del identificador de mayor tamaño que se le haya definido.

Por ejemplo puedes unir un tipo unsigned int, de 4 bytes, con un array de 4 unsigned char, de esta forma podrías acceder a ese entero byte a byte o todo el conjunto de una tacada.



Por otra parte está el mapa de bits que se declara igual que una estructura pero asignándole a cada variable el número de bits que debe ocupar. Por ejemplo, si se declara una variable unsigned de tres bits solo manejará datos de 0 a 7, si es más de 7 el overflow hará que empiece con 0 otra vez. El como maneje C la colocación de los campos de bits no está definido en el estándar así que depende de cada compilador el cómo los vaya a colocar. De normal intentará cuadrarlos en posiciones de memoria que sean potencia de 2 para acceder de forma más rápida. De igual forma se puede forzar ese comportamiento con variables de 0 bits. Eso indica al compilador que cuadre el siguiente elemento.
#412
Y por supuesto si tienes en el prototipo la función llamada cuentavocales después no la llames cuentav o cambia en nombre en el prototipo.
#413
Busca la palabra con strstr, te dará la posición donde se inicia o NULL si no la encuentra. Lo demás es aritmética de punteros.
#414
En un do-while el while necesita de una expresión que termine en un valor booleano. Es decir: el while siempre va acompañado de una expresión entre paréntesis.
#415
Esta parte está mal:
resul = sumaClavesImparesDosHijo(nodo->iz) + sumaClavesImparesDosHijo(nodo->de);

Sí ya haces la suma dentro del if no debes cambiar otra vez resul.

Sólo debes llamar la función con los nodos iz y de si estos existen, ya se encargará la primera parte de la función de realizar la suma.
#416
Creo que el S.O. no te permite salirte del marco de memoria de tu programa.
#417
Bucles
#418
Qué tal así:

void bufflush(char *str) {
    char *c = strchr(str, '\n');

    if(c)
        *c = '\0';
    else
        while(getchar()!='\n');
}


Esta función se usa en conjunción con fgets aprovechando que esta también adquiere el retorno de carro.
Sí por límite de caracteres no ha conseguido de capturar todo desde el buffer, ésta función limpiará lo que ha sobrado incluso el carácter de nueva línea.
En cambio si se ha capturado, incluso el carácter de nueva línea, la función lo buscará y lo sustituirá por un carácter nulo (consiguiendo así que nuestra cadena no haga un cambio de línea no deseado cuando la representemos) y ya no esperara el carácter de nueva línea que no existe en el buffer.
#419
Has leído el artículo del link?

En él se explica porqué ocurre y en qué otros casos puede suceder.

Básicamente habla de los puntos de secuencia que son situaciones en la que C asegura que todos los cálculos previos están hechos. Si hay expresiones que dependen de unas de otras y no ha habido puntos de secuencia, puedes encontrar resultados aleatorios como en el ejemplo ya que, para hacer código más eficiente puede ejecutar esa serie de instrucciones en tiempos diferentes a los que has programado.
#420
Esto es por conio.h que es una librería de Borland y estás usando otro compilador que no la tiene.