朋友们,我今天写了段代码,想获取字符串最后一个单词的长度,字符串中单词用空格分割,我的思路是将字符串截取后获得最后一个单词,然后计算其长度即可:
int getLastWordLength(){
// char target;
// scanf("%s", &target);
// if (strlen(&target) < 0 || strlen(&target) > 5000)
// return 0;
char target[30]="noelll 1234qwe";
char* current;
current = strtok(target, " ");
printf("target = %s", target);
printf("current = %s\n", current);
char temp[20];
strcpy(temp, current);
printf("temp's length = %d\n",strlen(temp));
while (current != NULL) {
if (strlen(current) > strlen(temp)) {
strcpy(temp, current);
}
//printf("current = %s\n", current);
current = strtok(NULL, " ");
}
printf("%d\n", (int)strlen(temp));
return 0;
}
如果target
是控制台输入的,我代码最后只能输出第一个单词的长度,while只执行一次,然后current
就是NULL
了,没有截取到第二个单词,但是8,我改成数组把代码写死,就可以正确输出。请问这是strtok
这个函数只能截取数组定义的字符串吗?
如果是实现我上面的效果,请问有什么方法吗?
scanf 的 target 只有一个字符的空间肯定是不行的。如果控制台输入的长度可能大于 30 ,数组定义也得相应地改得更长。