Autor
|
Tema: Dudas con size_t en lenguaje C. (Leído 6,453 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
Hola, a todos. El caso es que en este tiempo de estudio de C me tope un montón de oportunidades con el tipo size_t, cada vez que esto ocurría consultaba en Internet, pero nunca lo pude comprender del todo, en el programa que dejo a continuación el autor lo utiliza y desearía que me digan (si lo desean) el efecto que tiene en el mismo,- #include <stdio.h> const size_t BUFFER_LEN = 512; int main( void ){ char buffer[BUFFER_LEN]; char *pS[3] = { NULL }; char *pbuffer = buffer; size_t index = 0; int i; printf("\n Introduzca 3 mensajes en total menos de %u caracteres.", BUFFER_LEN -2); for( i=0 ; i<3 ; i++ ){ printf("\n Ingrese %s Mensaje....:", i >0? "otro" : "primer" ); pS[i] = &buffer[index]; for( ; index<BUFFER_LEN ; index++) if((*(pbuffer +index ) = getchar()) == '\n'){ *(pbuffer+index++) = '\0'; break; } if((index == BUFFER_LEN) && ((*(pbuffer+index-1) != '\0') || (i<2))){ printf("\nSe agoto el espacio en el bufer."); return 1; } } printf("\nLas cadenas introducidas son...:\n\n"); for( i = 0 ; i<3 ; i++ ) printf("\n El bufer tiene %d caracteres sin usar.\n", BUFFER_LEN -index ); return 0; }
Tengo muchas dudas más con este programa que luego les iré consultando (de ser necesario modificaré el enunciado). - Saludos.
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
size_t es un álias de unsigned long.
|
|
|
En línea
|
|
|
|
geeke
Desconectado
Mensajes: 93
|
size_t es un tipo sin signo por lo tanto, no puede representar ningun valor negativo. En su ejemplo , si su índice de bucle va a ser siempre mayor que cero, podría tener sentido usar size_t , o cualquier otro tipo de datos sin signo.
|
|
|
En línea
|
|
|
|
furciorifa
Desconectado
Mensajes: 94
|
size_t is a type that can hold any array index.
Depending on the implementation, it can be any of:
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
Here's how size_t is defined in stddef.h of my machine:
typedef unsigned long size_t;
Lo traigo de stackoverflow
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Para aclararlo: size_t siempre será el tipo de dato entero sin signo que pueda alojar, de forma natural para la máquina, el entero más grande.
Si el procesador es de 8 bits será un unsigned char. Si el procesador es de 64 bits un unsigned long.
Depende de la arquitectura y el compilador.
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola a todos. Muchas pero muchas gracias a los que se ocuparon del tema, pero como a menudo no logro hacerme entender, lo que necesito en concreto es saber que hacen estas 2 lineas, que incidencia tiene sobre el programa. -
size_t index = 0; const size_t BUFFER_LEN = 512;
Saludos.-
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
El primero es el índice que utilizapara recorrer el buffer. Sin más. El segundo, el const, es para almacenar el tamaño del buffer. Va hacer un buffer de 512 char.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Esto se convierte en: unsigned long index = 0; const unsigned long BUFFER_LEN = 512;
El uso es el que te da ivancea69.
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola, gente. Por fin tengo claro lo de size_t y lo que hace el programa combinando el tipo char con punteros, estoy tratando de hacer mi propia versión pero no logro cambiar casi nada para lograr lo mismo, no sé Uds.
Saludos. Daniel
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Lo que hac el programa es ponerla todo sobre un array grande y usar diferentes punteros para marcar el inicio de cada cadena individual que hay sobre ése.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Algunas dudas con el lenguaje ASM
Ingeniería Inversa
|
.:UND3R:.
|
1
|
3,000
|
23 Mayo 2011, 20:14 pm
por MCKSys Argentina
|
|
|
dudas lenguaje c
Programación C/C++
|
General Dmitry Vergadoski
|
4
|
3,241
|
26 Mayo 2012, 20:27 pm
por Caster
|
|
|
dudas en lenguaje c
Programación C/C++
|
General Dmitry Vergadoski
|
2
|
2,504
|
15 Junio 2012, 23:02 pm
por david_BS
|
|
|
size_t length en lenguaje C.
Programación C/C++
|
NOB2014
|
7
|
4,092
|
7 Marzo 2016, 06:53 am
por furciorifa
|
|
|
Dudas con cola e INT_MAX lenguaje C.
« 1 2 »
Programación C/C++
|
NOB2014
|
11
|
5,958
|
22 Agosto 2016, 18:33 pm
por NOB2014
|
|