这是一个程序:首先,用户输入一个文本字符串(char text1;
);然后我通过复制数组(char words[20][200]
)中的每个单词来分隔单词中的字符串;
我想逐字比较字符串并复制字符串中不重复的每个单词text1
。重复出现的单词text1
将“按原样”复制到新字符串 ( char text2
) 中。
示例 1:
如果用户输入“ hello world
”,则结果必须为“ hello hello world world
”
示例 2:
如果用户输入“ weather is good weather
”,则结果必须为“ weather is is good good weather
”
问题是,如果我输入“ hello world
”,那么结果我会得到“ hello hello world
”。
我怎么能解决这个问题?
这是代码:
#include <stdio.h>
#include <string.h>
int main()
{
char text1[200], text2[200], words[20][100], *dist;
int i, j, nwords=0;
// Text input
printf("\n Enter the text: ");
gets(text1);
// Separate text word by word
dist = strtok(text1, " ,.!?");
i=0;
while(dist!=0)
{
strcpy(words[i],dist);
dist = strtok(NULL, " ,.!?");
i++;
nwords++;
}
// Task
if(nwords=1)
{
strcat(text2,words[0]);
strcat(text2," ");
strcat(text2,words[0]);
}
for(i=0; i<nwords-1; i++)
for(j=i+1; j<nwords; j++)
{
if(strcmp(words[i],words[j])==0)
{
strcat(text2,words[i]);
}
else
{
strcat(text2,words[i]);
strcat(text2," ");
strcat(text2,words[i]);
}
}
// Result
printf("\n\nInput:\n");
puts(text1);
printf("\n\nResult:\n");
puts(text2);
getchar();
return 0;
}