如何分隔和比较句子中的单词如下?例如,我想分开“ipsum是它有ipsum”,这句话中有两个相同的单词(“ipsum”)。我正在尝试编写后续代码,但它不起作用,因为它在数组iarr
上失败。
int main(void) {
int i, j, s, si;
char* iarr, arr[] = {
"lorem ipsum dolor",
"sit amet",
"ipsum is that it has ipsum"
};
s = sizeof(arr)/sizeof(char*);
for(i=0; i<s; i++){
iarr = strtok(arr[i]," ");
si = sizeof(iarr)/sizeof(char*);
for(j=0; j<si; j++){
printf("%s\n",iarr[j]);
}
}
return 0;
}
答案 0 :(得分:1)
您不应该需要si = sizeof(iarr)/sizeof(char*);
这是一个不正确的指令,因为iarr是一个char *。
使用const char *作为第一个参数时,strtok会出错。
试试这个解决方案:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int i, j, s, si;
char* iarr;
char *tmp;
char* arr[] = {"lorem ipsum dolor", "sit amet", "ipsum is that it has ipsum"};
s = sizeof(arr)/sizeof(char*);
for(i=0; i<s; i++){
tmp = strdup(arr[i]);
// you should allocate memory for string that you would to cut
iarr = strtok(tmp, " ");
while (iarr != NULL)
{
printf ("%s\n",iarr);
iarr = strtok (NULL, " ");
}
free(tmp);
tmp = NULL;
}
return 0;
}