在 C 中分隔和比较字符串中的相同单词
Separate and compare same word inside a string in C
如何将句子中的单词分开比较,如下所示?比如我要分开"ipsum is that it has 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;
}
你应该不需要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;
}
如何将句子中的单词分开比较,如下所示?比如我要分开"ipsum is that it has 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;
}
你应该不需要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;
}