【发布时间】:2022-01-16 10:50:06
【问题描述】:
#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 P>
8
为什么令牌的大小是 8 ? 它应该是令牌的长度。
【问题讨论】:
-
sizeof(token)是指针的大小。请使用strlen()。 -
这段代码说明了数组和指针之间的区别。
-
另一个例子是
char str[40] = "abc";检查sizeof str和strlen(str)之间的区别。
标签: c pointers c-strings sizeof strlen