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


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dudas con size_t en lenguaje C.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dudas con size_t en lenguaje C.  (Leído 6,344 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Dudas con size_t en lenguaje C.
« en: 22 Enero 2016, 23:29 pm »

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,-

Código
  1. #include <stdio.h>
  2.  
  3. const size_t BUFFER_LEN = 512;
  4.  
  5. int main( void ){
  6. char buffer[BUFFER_LEN];
  7. char *pS[3] = { NULL };
  8. char *pbuffer = buffer;
  9. size_t index = 0;
  10. int i;
  11.  
  12. printf("\n Introduzca 3 mensajes en total menos de %u caracteres.", BUFFER_LEN-2);
  13.  
  14.  
  15. for( i=0 ; i<3 ; i++ ){
  16. printf("\n Ingrese %s Mensaje....:", i>0? "otro" : "primer" );
  17. pS[i] = &buffer[index];
  18. for( ; index<BUFFER_LEN ; index++)
  19. if((*(pbuffer+index) = getchar()) == '\n'){
  20. *(pbuffer+index++) = '\0';
  21. break;
  22. }
  23.  
  24. if((index == BUFFER_LEN) && ((*(pbuffer+index-1) != '\0') || (i<2))){
  25. printf("\nSe agoto el espacio en el bufer.");
  26. return 1;
  27. }
  28. }
  29.  
  30. printf("\nLas cadenas introducidas son...:\n\n");
  31. for( i = 0 ; i<3 ; i++ )
  32. printf("%s\n", pS[i]);
  33.  
  34. printf("\n El bufer tiene %d caracteres sin usar.\n", BUFFER_LEN-index);
  35.  
  36. return 0;
  37. }

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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #1 en: 22 Enero 2016, 23:46 pm »

size_t es un álias de unsigned long.


En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #2 en: 23 Enero 2016, 01:22 am »

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 Desconectado

Mensajes: 94


Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #3 en: 23 Enero 2016, 06:10 am »

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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #4 en: 23 Enero 2016, 09:39 am »

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 Desconectado

Mensajes: 366



Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #5 en: 23 Enero 2016, 14:15 pm »

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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Dudas con size_t en lenguaje C.
« Respuesta #6 en: 23 Enero 2016, 14:35 pm »

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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #7 en: 23 Enero 2016, 15:30 pm »

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 Desconectado

Mensajes: 366



Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #8 en: 24 Enero 2016, 14:55 pm »

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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Dudas con size_t en lenguaje C.
« Respuesta #9 en: 24 Enero 2016, 15:08 pm »

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Algunas dudas con el lenguaje ASM
Ingeniería Inversa
.:UND3R:. 1 2,979 Último mensaje 23 Mayo 2011, 20:14 pm
por MCKSys Argentina
dudas lenguaje c
Programación C/C++
General Dmitry Vergadoski 4 3,213 Último mensaje 26 Mayo 2012, 20:27 pm
por Caster
dudas en lenguaje c
Programación C/C++
General Dmitry Vergadoski 2 2,469 Último mensaje 15 Junio 2012, 23:02 pm
por david_BS
size_t length en lenguaje C.
Programación C/C++
NOB2014 7 4,043 Último mensaje 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,839 Último mensaje 22 Agosto 2016, 18:33 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines