es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El tamaño de la salida no es el esperado.

#include <stdio.h>
#include <string.h>

int main() {
   char str[400] = "rQvqQmyl9N9FmI8ECESs0N2dKBATuIrvT4HEh0lRa+6kGHIP0owiFqFdlvktmOQMTdZ5gW44G2O6T2uQGlIeeobnyYuZscLadvyM5tkzb1MhEmBoIuCp8db9GZ8SBBMnoDIWNi9Ad6pRzBpcxmobWJnJo3O6BQ/Kii03RMfXVEw5No7n576J0blLPirrH6M7OaIp7qcrT7hD4qHkGIKjoAcGLsu0c5Ii2r+lOnFE1zgMPZtw8+QoHBp/lzFH5LyB973e+k9B5T3UO/L7xM6h8ZN4ufXibM385PdzPuwZ3NbmZRCSpIrvGNyUSZo0/mcPuzt6KuoQpNLYt9Avmi";
   // Extraer el primer token
   char * token = strtok(str, " ");
   printf(" %s\n", token); // Imprimir el token
   printf("%lu \n", sizeof(token));
   return 0;
}

Salida:
rQvqQmyl9N9FmI8ECESs0N2dKBATuIrvT4HEh0lRa+6kGHIP0owiFqFdlvktmOQMTdZ5gW44G2O6T2uQGlIeeobnyYuZscLadvyM5tkzb1MhEmBoIuCp8db9GZ8SBBMnoDIWNi9Ad6pRzBpcxmobWJnJo3O6BQ/Kii03RMfXVEw5No7n576J0blLPirrH6M7OaIp7qcrT7hD4qHkGIKjoAcGLsu0c5Ii2r+lOnFE1zgMPZtw8+QoHBp/lzFH5LyB973e+k9B5T3UO/L7xM6h8ZN4ufXibM385PdzPuwZ3NbmZRCSpIrvGNyUSZo0/mcPuzt6KuoQpNLYt9Avmi

8

¿Por qué el tamaño de token es 8?
Debería ser la longitud de token.</string.h></stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El tamaño del token es 8 porque es una variable puntero. En C, las variables puntero almacenan direcciones de memoria. En este caso, la variable puntero ‘token’ apunta al primer carácter del token extraído usando la función ‘strtok’.

    Dado que el tamaño de una variable puntero depende de la arquitectura del sistema, puede variar entre 4 bytes o 8 bytes. En esta arquitectura de sistema en particular, el tamaño de una variable puntero es de 8 bytes. Por lo tanto, el tamaño de ‘token’ es de 8 bytes.

    El tamaño del token real se puede obtener utilizando la función strlen.

Comments are closed.