#include<stdio.h>
#include <string.h>
int main() {
char str[400] = "rQvqQmyl9N9FmI8ECESs0N2dKBATuIrvT4HEh0lRa 6kGHIP0owiFqFdlvktmOQMTdZ5gW44G2O6T2uQGlIeeobnyYuZscLadvyM5tkzb1MhEmBoIuCp8db9GZ8SBBMnoDIWNi9Ad6pRzBpcxmobWJnJo3O6BQ/Kii03RMfXVEw5No7n576J0blLPirrH6M7OaIp7qcrT7hD4qHkGIKjoAcGLsu0c5Ii2r lOnFE1zgMPZtw8 QoHBp/lzFH5LyB973e k9B5T3UO/L7xM6h8ZN4ufXibM385PdzPuwZ3NbmZRCSpIrvGNyUSZo0/mcPuzt6KuoQpNLYt9Avmi";
// Extract the first token
char * token = strtok(str, " ");
printf( " %s\n", token ); //printing the token
printf("%lu \n", sizeof(token));
return 0;
}
輸出rQvqQmyl9N9FmI8ECESs0N2dKBATuIrvT4HEh0lRa 6kGHIP0owiFqFdlvktmOQMTdZ5gW44G2O6T2uQGlIeeobnyYuZscLadvyM5tkzb1MhEmBoIuCp8db9GZ8SBBMnoDIWNi9Ad6pRzBpcxmobWJnJo3O6BQ / Kii03RMfXVEw5No7n576J0blLPirrH6M7OaIp7qcrT7hD4qHkGIKjoAcGLsu0c5Ii2r lOnFE1zgMPZtw8 QoHBp / lzFH5LyB973e k9B5T3UO / L7xM6h8ZN4ufXibM385PdzPuwZ3NbmZRCSpIrvGNyUSZo0 / mcPuzt6KuoQpNLYt9Avmi
8
為什么令牌的大小是 8 ?它應該是令牌的長度。
uj5u.com熱心網友回復:
變數token的型別char *是指標
char * token = strtok(str, " ");
所以這個電話 printf
printf("%lu \n", sizeof(token));
輸出系統中指標的大小。
例如,如果您甚至使用不指向任何字串的未初始化指標,您將獲得相同的結果
char *token;
printf( "%zu \n", sizeof(token));
如果你想輸出指向字串的長度,那么你需要寫
printf("%zu \n", strlen(token));
uj5u.com熱心網友回復:
sizeof用于管理記憶體,而不是資料。它告訴你一個型別需要多少記憶體。sizeof陣列是陣列所需的位元組數。sizeof指標是指標需要的位元組數。
strlen用于管理字串的資料。它告訴您字串的長度,即第一個零字符之前的非零字符數。
uj5u.com熱心網友回復:
八是指標的大小,它是平臺相關的。您需要的是遍歷token變數或用于strlen(token)獲取實際大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379855.html
上一篇:打開的檔案地址
