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

#1021
Programación C/C++ / Re: Strtok--Dividir Fecha
10 Noviembre 2016, 14:30 PM
Usa sscanf. Algo así:
sscanf(fecha, "%d/%d/%d", &dia, &mes, &anyo);
#1022
En tu ejemplo te faltó el camino 1 - 2 por definir, por eso programa no podía verlo y te dio 1 - 5 - 4 - 3
#1023
Usa fprintf para escribir el ID en el archivo de texto. Es lo mismo que printf pero como primer argumento se le pasa el puntero al archivo.
#1024
CHAR_BIT es una macro que depende de la biblioteca estándar de C, está en la librería limits.h
Estas macros, como ya he dicho, están pensadas para ayudar a la portabilidad de código pues hacen que no se deba modificar de una plataforma a otra aún si las especificaciones son diferentes.

De hecho para una máquina que trabaje con caracteres de 7 bits, en su biblioteca asociada a su lenguaje C, te encontrarás con que CHAR_BIT tiene el valor 7, mientras que en un moderno computador de sobremesa, en su biblioteca tendrá definido CHAR_BIT con el valor 8.

No existen unos valores invariables, para todas las arquitecturas del mundo, de las macros de la biblioteca de C, más sabiendo que es un lenguaje dependiente de la arquitectura. Las macros estarán definidas para encajar con esa arquitectura para la que está pensada esa biblioteca.

Es más, si usaras números mágicos en tus programas te encontrarías con un archivo fuente que te funciona bien en un sitio, y sin embargo lo portas a otra máquina diferente y te falla.

limits.h existe precisamente para esto. Un entero int no tiene un tamaño igual en un procesador de 32 bits que en un de 8. Así mediante dicha librería el programa puede saber si va a exceder el límite del tipo de dato.
#1025
Necesitas strcat de string.h
#1026
CHAR_BIT es una de esas constantes que se usan para hacer portable el código en diferentes máquinas.

Hay procesadores que pueden usar los antiguos char de 7 bits. En ellos la constante CHAR_BIT valdría 7.
#1027
Explica como debe ser el algoritmo. Ten en cuenta que no sabemos nada de lo que debe hacer.
#1028
Claro.
Supongamos que CHAR_BIT vale 8. En algunas máquinas el char puede ser de 7 bits, con lo que el programa fallaría. Así que sería mejor sustituir esa parte por un 8 para hacerla más portable.

Hay que encender solamente el bit más significativo y para ello se moverá un 1 tantas posiciones a la izquierda como sea necesario: 1 <<

sizeof da la cantidad de bytes de un tipo, pero el operador << mueve una cantidad de bits y para transformar cantidad de bytes en catidad de bits se multiplica por 8. Quedará así 1 << sizeof(unsigned) * 8

Pero haciéndolo así nos salimos, por una sola posición, de las dimensiones del dato, en realidad hay que ir un bit a la derecha así que la operación se convierte en 1 << sizeof(unsigned) * 8 - 1.



#1029
Quisiste decir:
i = 1;
y
unsigned int bit = 1U << (sizeof(unsigned) * CHAR_BIT - 1);
#1030
Para el problema de scanf:
scanf("%95[^\n]", frase);