我想从字符串中找到单词的长度。当我在while循环中使用strlen(split)时,它没问题。但是当我从循环使用它时,我有分段错误错误。有什么问题?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char string[] = "Hello world!";
char* word = strtok(string, " ");
printf("%d\n", strlen(word));
while(split != NULL) {
word = strtok(NULL, " ");
printf("%d\n", strlen(word ));
}
}
答案 0 :(得分:4)
在致电strtok
之前,您需要检查NULL
是否未返回strlen
来自strtok
man page(我的重点)
每次调用strtok()都会返回一个指向以null结尾的字符串的指针 包含下一个标记。此字符串不包括分隔符 字节。 如果找不到更多令牌,strtok()将返回NULL。
while(word != NULL) {
word = strtok(NULL, " ");
if (word != NULL) {
printf("%d\n", strlen(word ));
}
}
请注意,您的代码中也存在拼写错误。 while
循环应该测试word
而不是split
。