Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como obtener datos de archivos binarios en C++??

Estas en el tema de Como obtener datos de archivos binarios en C++?? en el foro de Programación General en Foros del Web. Espero no haberlo preguntado antes, pero sigo sin saber como hacerlo. Necesito leer archivos de extensión ".w3g" (de un juego) el cual parecen ser binarios ...

  #1 (permalink)  
Antiguo 13/06/2005, 16:13
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
Como obtener datos de archivos binarios en C++??

Espero no haberlo preguntado antes, pero sigo sin saber como hacerlo. Necesito leer archivos de extensión ".w3g" (de un juego) el cual parecen ser binarios ya que cuando lo abro con el notepad veo caracteres inentendibles. Hasta ahora probe usando read() o getline() para leer pero no me lee nada, como se hace para interpretar el contenido??

  #2 (permalink)  
Antiguo 13/06/2005, 23:06
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Con C (no me quedó claro si estabas usando los filestreams):

Para leer archivos lo que tienes que hacer es siempre leerlos en modo _binario_ y byte a byte copiándolos a un buffer, y luego ya operas con él.

En vez de "t" usa "b". Y para leer, fread, que te permite meter en un buffer el contenido que desees de un archivo de una tacada, que puede ser todo.

Y con C++ lo mismo pero, al igual que en con fopen de C, debes abrir los archivos en modo binario.
  #3 (permalink)  
Antiguo 14/06/2005, 10:15
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
si, estoy usando la libreria <fstream> pero eso de abrirlo en modo binario ya lo hice, pero al mostrar el buffer por pantalla no me sale nada, lo que quiero es saber como interpretar lo que leo, yo mas o menos se los datos que necesito sacar pero no se exactamente en que parte del archivo estan :(
  #4 (permalink)  
Antiguo 14/06/2005, 10:36
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Jejeje, pues que quieres que te salga. "este es parte de un juego, aqui se gardan las vidas". Obiamente no, te van salir puros caracteres raros como en el notepad, si lo lees en binario es lo smismo que leerlo ent exto a expcion de que en el binario no se cuentan los saltos de lineas como saltos de lineas, sino como un byte mas del archivo.
Lo que debes hacer es buscar en internet o donde sea, las especificaciones de ese archivo, que significa cada byte, o que para que sirve cierto bloque de bytes, etc.

Saludos
  #5 (permalink)  
Antiguo 14/06/2005, 13:04
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por Instru
Jejeje, pues que quieres que te salga. "este es parte de un juego, aqui se gardan las vidas". Obiamente no, te van salir puros caracteres raros como en el notepad, si lo lees en binario es lo smismo que leerlo ent exto a expcion de que en el binario no se cuentan los saltos de lineas como saltos de lineas, sino como un byte mas del archivo.
Lo que debes hacer es buscar en internet o donde sea, las especificaciones de ese archivo, que significa cada byte, o que para que sirve cierto bloque de bytes, etc.

Saludos
No, el modo texto lo único diferente que tiene es que el archivo termina al encontrar un EOF o Feedback.

Los bytes son los mismos, un salto de línea en un archivo será lo mismo que en uno binario.

Y sobre lo de investigar acerca del archivo, deberias abrirle con un editor hexadecimal (o hacerle tú) y intentar identificar algo en él.. Si es muy complicado olvídalo porque podrías tirarte horas. Algunas ideas: buscas patrones; grabas el archivo con un valor conocido, luego lo buscas en el archivo grabado, vuelves a probar, si coincide ahí tendrás los bytes que buscabas.

Para los juegos comerciales o parecidos te será difícil hacer cosas de esas, son archivos muy grandes (les he visto de hasta megas, me parece exagerar) en los que cambian mucho las cosas, aparte de si los encriptan de cualquier manera. Con que te metan un XOR estarías mareado y te sería imposible descifrar nada, así que imagínate...

Por otra parte, para hacer cosas de esas en los juegos lo que hago es atacarles en ejecución en la memoria. Es más fácil en la mayoría de los casos que intentar leer el archivo a mano tú solo. Hasta Age Of Empires 2 Conquerors le logré cambiar a 500 el límite de población en ejecución (por lo menos el indicador textual, no sé si el límite real, dado que no llegué a hacer unidades para comprobarlo)... Para esto hay programas ya hechos. Eso, o hacerte un programa, pero debes usar la API y tener cuidado de que no te lo detecten o de colgar el programa al que atacas. También decirte que estos programas suelen hacer virguerías en ejecución para que sea más difícil accederles.
  #6 (permalink)  
Antiguo 14/06/2005, 16:18
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
como es eso dele ditor hexadecimal, para que sirve y cual puedo usar??

el archivo que yo quiero leer es un replay del Warcraft 3 y no pesa mas de 120kb como mucho, ya hay programas que se encargan de extraer informacion de este archivo, incluso yo me baje un script en PHP y lo tengo en mi pagina para sacar la info de los replays que envia la gente. lo unico que se me ocurre es investigar el script en php y ver como lo hacen para luego tratar de hacerlo en c++, claro q es mucho mas dificil parece :s
  #7 (permalink)  
Antiguo 14/06/2005, 16:37
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por SiR.CARAJ0DIDA
como es eso dele ditor hexadecimal, para que sirve y cual puedo usar??

el archivo que yo quiero leer es un replay del Warcraft 3 y no pesa mas de 120kb como mucho, ya hay programas que se encargan de extraer informacion de este archivo, incluso yo me baje un script en PHP y lo tengo en mi pagina para sacar la info de los replays que envia la gente. lo unico que se me ocurre es investigar el script en php y ver como lo hacen para luego tratar de hacerlo en c++, claro q es mucho mas dificil parece :s
Pues al contrario, si ya está hecho el código será lo más sencillo.

Un editor hexadecimal es un editor que abre los archivos y muestra sus bytes con distintas funciones para mostrarlo en hexadeciaml, decimal, al lado la cadena, el offset, búsqueda y mil cosas más.
  #8 (permalink)  
Antiguo 14/06/2005, 18:33
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
bueno aca hice un mini programita q lee el archivo, pero cuando lo muestro no sale nada, incluso trato de mostrar en hexadecimal y nada..

Código:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
void leer(char*, long);
void fileinfo(char**, long*);
void mostrar(char*);
int main()
{
	char *buffer;
	long size;
	fileinfo(&buffer, &size);
	leer(buffer, size);
	mostrar(buffer);
	system("pause");
	return 0;
}
void fileinfo(char **buffer, long *size)
{
	ifstream file("G:\\test.w3g", ios::in | ios::binary | ios::ate);
	*size = file.tellg();
	file.seekg(0, ios::beg);
	*buffer = new char[*size];
}
void leer(char *buffer, long size)
{
	ifstream file("G:\\test.w3g", ios::in | ios::binary);
	if (!file.fail() && file.is_open())
	{
		file.read(buffer, size);
		cout << "\nCantidad de caracteres leidos: " << file.gcount() << endl;
		cout << "\nEl archivo ocupa " << size << " bytes" << endl;	
	}else{
		cout << "Error en el archivo.\n\n";
	}
}
void mostrar(char *buffer)
{
	cout << hex << buffer << endl;
	delete[] buffer;
}
  #9 (permalink)  
Antiguo 14/06/2005, 20:31
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Pues esta raro, pero mira no te podria ayudar mucho porque usas C+ y pues yo me especializo en C. Lo que si te puedo decir es que no es muy buena idea hacer eso, namas te lo digo como consejo, no lo tomos a mal.
Es mala idea porque lo unico que haces es un mostrador hexadecimal, y si lo que quieres es editarle algo o extraer info del archivo pues namas informate que sgnifica cada byte


Saludos
  #10 (permalink)  
Antiguo 15/06/2005, 09:18
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por Instru
Pues esta raro, pero mira no te podria ayudar mucho porque usas C+ y pues yo me especializo en C. Lo que si te puedo decir es que no es muy buena idea hacer eso, namas te lo digo como consejo, no lo tomos a mal.
Es mala idea porque lo unico que haces es un mostrador hexadecimal, y si lo que quieres es editarle algo o extraer info del archivo pues namas informate que sgnifica cada byte


Saludos
Lo ha hecho porque le dije que usase uno (Ejemplo Hex Workshop) o directamente se hiciese él uno...

PD: Dirás que estás aprendiendo C y aún no has empezado con C++ ;)
  #11 (permalink)  
Antiguo 15/06/2005, 09:21
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por SiR.CARAJ0DIDA
bueno aca hice un mini programita q lee el archivo, pero cuando lo muestro no sale nada, incluso trato de mostrar en hexadecimal y nada..
Bueno no tengo tiempo de corregirte, pero no cierras el archivo después de usarle, usas variables con puntero extrañas (long*) cuando puedes devolverlo por la función y usas un (char **) que no me explico... Puedes pasar el char* normal a la función, no hace falta hacer putneros a punteros...
  #12 (permalink)  
Antiguo 15/06/2005, 10:59
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
me parece que tenes que repasar punteros.. si yo le mando el puntero le estoy mandando el contenido del puntero, yo necesito la direccion del puntero para alojar ahi la direcion de el nuevo char creado dinamicamente, pruebalo y veras que no funciona como tu dices.

con respecto al long*, si no me equivoco el limite del entero sin signo es el 64.000, asi que no me alcanza para alojar el tamaño del archivo..

me baje un tal "editpad pro" o algo asi, abro el archivo y lo muestro en hexadecimal todo muy lindo y prolijito pero no se que significa cada numero :(
  #13 (permalink)  
Antiguo 15/06/2005, 12:37
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por SiR.CARAJ0DIDA
me parece que tenes que repasar punteros.. si yo le mando el puntero le estoy mandando el contenido del puntero, yo necesito la direccion del puntero para alojar ahi la direcion de el nuevo char creado dinamicamente, pruebalo y veras que no funciona como tu dices.

con respecto al long*, si no me equivoco el limite del entero sin signo es el 64.000, asi que no me alcanza para alojar el tamaño del archivo..

me baje un tal "editpad pro" o algo asi, abro el archivo y lo muestro en hexadecimal todo muy lindo y prolijito pero no se que significa cada numero :(


Para que te des cuenta de las bobadas que dices y que el que tienes que repasar aquí eres tú:

Cita:
Iniciado por SiR.CARAJ0DIDA
si yo le mando el puntero le estoy mandando el contenido del puntero
Si yo le mando un XXX le estoy mandando el contenido de XXX. <--- Pues va a ser que no
Si yo le mando una caja le estoy mandando el contenido de la caja. <--- Pues va a ser que no
Si yo le mando el puntero le estoy mandando el contenido del puntero. <--- Pues tampoco

Lo lamento pero es que me ha dolido

Sobre lo del "puntero a puntero a char" para "modificar el puntero a char", decirte que sigue siendo extraño e inútil, para eso se devuelve el puntero char * ya reservado, y no pasar un **... Así logras programas de locura. Sobre lo de long*, es otra locura, no me parece a mi juicio bien programado. Las funciones, cuantos menos argumentos-modificables tengan mejor. Y si no, usa referencias para lo que intentas hacer que para eso existen y no lías más el programa con punteros... ;) O mejor aún, nada de las dos: ¡Junta las dos funciones y deja de pasar cosas extrañas!

Por cierto, lo que te dije es totalmente correcto. Sobre lo del long, no es long sino "unsigned long", y el limite no es 64000 sino 4294967296, y el unsigned short sí son 65536 que es lo que aproximabas.

Última edición por MaxExtreme; 15/06/2005 a las 12:51
  #14 (permalink)  
Antiguo 16/06/2005, 02:07
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 20 años, 1 mes
Puntos: 48
Usa el codigo PHP como documentacion del formato del fichero binario. Podria ser incluso que ese fichero binario solo es un zip de un XML.
  #15 (permalink)  
Antiguo 16/06/2005, 10:12
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por MaxExtreme


Para que te des cuenta de las bobadas que dices y que el que tienes que repasar aquí eres tú:



Si yo le mando un XXX le estoy mandando el contenido de XXX. <--- Pues va a ser que no
Si yo le mando una caja le estoy mandando el contenido de la caja. <--- Pues va a ser que no
Si yo le mando el puntero le estoy mandando el contenido del puntero. <--- Pues tampoco

Lo lamento pero es que me ha dolido

Sobre lo del "puntero a puntero a char" para "modificar el puntero a char", decirte que sigue siendo extraño e inútil, para eso se devuelve el puntero char * ya reservado, y no pasar un **... Así logras programas de locura. Sobre lo de long*, es otra locura, no me parece a mi juicio bien programado. Las funciones, cuantos menos argumentos-modificables tengan mejor. Y si no, usa referencias para lo que intentas hacer que para eso existen y no lías más el programa con punteros... ;) O mejor aún, nada de las dos: ¡Junta las dos funciones y deja de pasar cosas extrañas!

Por cierto, lo que te dije es totalmente correcto. Sobre lo del long, no es long sino "unsigned long", y el limite no es 64000 sino 4294967296, y el unsigned short sí son 65536 que es lo que aproximabas.
bueno si vos sabes mas que mi profesor de la universidad haceme el programa con un solo puntero como vos decis a ver si anda.

65535 es el limite del INT no del long, estas cambiando todo lo que dije, como se supone que voy a guardar el numero 117734 en un INT?? ..
  #16 (permalink)  
Antiguo 16/06/2005, 11:01
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Esos limites dependen de la arquitectura, el problema es que tu profesor y vos siguen viviendo en la epoca de los 16 bits cuando un int tenia dos bytes.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #17 (permalink)  
Antiguo 16/06/2005, 11:43
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
estoy hablando de puntero a puntero, no del int ni del long.
  #18 (permalink)  
Antiguo 16/06/2005, 11:44
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Cita:
Iniciado por SiR.CARAJ0DIDA
estoy hablando de puntero a puntero, no del int ni del long.
"65535 es el limite del INT no del long, estas cambiando todo lo que dije, como se supone que voy a guardar el numero 117734 en un INT?? .."

Eso es dependiente de la arquitectura y no aplica a 32 bits.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #19 (permalink)  
Antiguo 16/06/2005, 12:39
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
bueno nos fuimos de tema
  #20 (permalink)  
Antiguo 18/06/2005, 06:16
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por SiR.CARAJ0DIDA
bueno si vos sabes mas que mi profesor de la universidad haceme el programa con un solo puntero como vos decis a ver si anda.

65535 es el limite del INT no del long, estas cambiando todo lo que dije, como se supone que voy a guardar el numero 117734 en un INT?? ..
No, disculpa, he dicho que _no_ es necesario usar punteros a punteros cuando programas en C++ porque puedes usar _referencias_. Y que la función tal como la has planteado es una bobada.

Como ha dicho Eternal Idol, "int" depende de la arquitectura. Dado que no has indicado nada, suponemos que se trata de 32 bits, y como tal, un int tiene eso, 32 bits.

En 32 bits (en la mayoría de compiladores) "int", "long int" y "long" es lo mismo. Su límite es de 0 a 4294967295 (sin signo).

Supongo que lo de que un int ocupa 16 bits y el límite es 65535 te lo habrá dicho tu supersabiondo profesor de universidad, ¿me equivoco?
  #21 (permalink)  
Antiguo 18/06/2005, 07:15
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 5 meses
Puntos: 4
no, nadie me dijo nada, eso lo lei por todos lados.
  #22 (permalink)  
Antiguo 18/06/2005, 11:35
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por SiR.CARAJ0DIDA
no, nadie me dijo nada, eso lo lei por todos lados.
Ya me dirás dónde... Porque MSDOS (y demás plataformas de 16 bits) desapareció cuando empezó la movida de Internet a llegar a todos los lugares...
  #23 (permalink)  
Antiguo 19/06/2005, 16:16
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
PD: Dirás que estás aprendiendo C y aún no has empezado con C++ ;)
No, pero por lo general uno tiene dudas. Pense que ya lo habia demostrado.

Y bueno, hasta donde yo se en la technologia de ahorita, in es de 32 bits y tiene un valor maximo de 2 a la 32 si no lleva signo.

El long hasta donde yo se tiene 64 bit y le cabe muchisimo.

Pero bueno, esos es lo que hasta ahora yo se y a la hora de programar uso sin problemas.

Pero aun tengo una duda que no me respondes SiR.CARAJ0DIDA.
Que es exactamente lo que quieres encontrar o leer o escribir en ese archivo?
SOlo quiero saber que pretendes hacerle, porque como que haces y discutes pero no dices bien tu proposito, dices que solo leerlo, leerle que, los bytes?

Saludos
  #24 (permalink)  
Antiguo 20/06/2005, 00:33
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
int y long tienen exactamente el mismo tamaño en 32 bits, 4 bytes.

printf("%u\r\n", sizeof(int));
printf("%u\r\n", sizeof(long));
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #25 (permalink)  
Antiguo 20/06/2005, 08:35
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por Eternal Idol
int y long tienen exactamente el mismo tamaño en 32 bits, 4 bytes.

printf("%u\r\n", sizeof(int));
printf("%u\r\n", sizeof(long));
Da igual, lo digo o lo dices y no se lo creen ;)
  #26 (permalink)  
Antiguo 20/06/2005, 08:36
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por MaxExtreme
En 32 bits (en la mayoría de compiladores) "int", "long int" y "long" es lo mismo. Su límite es de 0 a 4294967295 (sin signo).
  #27 (permalink)  
Antiguo 20/06/2005, 08:38
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por Instru
Y bueno, hasta donde yo se en la technologia de ahorita, in es de 32 bits y tiene un valor maximo de 2 a la 32 si no lleva signo.

El long hasta donde yo se tiene 64 bit y le cabe muchisimo.
Como ya hemos dicho en total 3 veces, no.

En plataformas de 32 bits una variable de 64 bits es perfectamente posible: lee sobre INT64, INT32 y demás especificaciones de cómo declararlas en los diferentes compiladores.

Una de 64 bits tiene de 0 a 18446744073709551615 (sin signo).
  #28 (permalink)  
Antiguo 20/06/2005, 10:07
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Cita:
En plataformas de 32 bits una variable de 64 bits es perfectamente posible: lee sobre INT64, INT32 y demás especificaciones de cómo declararlas en los diferentes compiladores.
Yo no dije que fuera imposible. Lo que si es que alguna vez lei que long era de 64 bits o en si que era mas grande que int, por eso existe, sino de que sirve tener long, int y long int si todos son los mismo?

De todas manera voy a invstigarlo, porque si se me hizo extraño.

Saludos
  #29 (permalink)  
Antiguo 20/06/2005, 11:23
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Instru, ¿Porque no probas el codigo que puse antes? Asi vas a comprobar el tamaño, con certeza, que usa tu compilador.

printf("%u\r\n", sizeof(int));
printf("%u\r\n", sizeof(long));
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #30 (permalink)  
Antiguo 20/06/2005, 12:00
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por Instru
Yo no dije que fuera imposible. Lo que si es que alguna vez lei que long era de 64 bits o en si que era mas grande que int, por eso existe, sino de que sirve tener long, int y long int si todos son los mismo?

De todas manera voy a invstigarlo, porque si se me hizo extraño.

Saludos
Te repito: C es un estándar para decenas de plataformas en decenas de sistemas en decenas de procesadores. En 32 bits PC, simplemente "int" es lo mismo que "long int". Realmente "int" según el estándar debe significar o "short int" o "long int", una de las dos, la cual debe ser el número de bits de la plataforma (o algo similar).

Con esas afirmaciones, tenemos que "int" debe ser de 32 bits, y como char es de 8 bits, "short int" se puso de 16, y por lo tanto "long int" de 32. Para resumir, "int" significa "long int".

Como te dice Eternal Idol, simplemente haz un sizeof, no tiene más misterio. Y no sigas diciendo cosas como "si no por qué existe?" o "voy a investigarlo", que parece que no crees en lo que te decimos, cuando en realidad es muy básico ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:13.