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