我有一个算法可以删除字符串中的重复单词:
int main()
{
char str[100], word[100], doubleArr[10][30];
int i = 0, j = 0, k = 0, len1 = 0, len2 = 0, l = 0, n, c = 0;
printf("Enter the string\n");
gets(str);
n = strlen(str);
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ') {
doubleArr[k][j] = '\0';
k++;
j = 0;
} else {
doubleArr[k][j] = str[i];
j++;
}
}
doubleArr[k][j] = '\0';
j = 0;
for (i = 0; i < k; i++) {
for (l = 1; l < k + 1; l++) {
if (doubleArr[l][j] == '\0' || l == i) {
continue;
}
if (strcmp(doubleArr[i], doubleArr[l]) == 0) {
doubleArr[l][j] = '\0';
}
}
}
j = 0;
for (i = 0; i < k + 1; i++) {
if (doubleArr[i][j] == '\0') {
continue;
} else {
printf("%s ", doubleArr[i]);
}
}
}
我需要做一个字符串中重复单词的计数器。
当我试图把计数器放在代码的不同地方时,总是得到错误的结果。
2条答案
按热度按时间lymnna711#
要对重复项进行计数,只需在测试
if (strcmp(doubleArr[i], doubleArr[l]) == 0)
之后,在检测到重复项时递增计数器但是,请注意,您的代码中存在许多小问题:
gets()
k
当当前字有至少1个字符.j > 0
,则在循环结束后递增它,并在代码的其余部分使用k
而不是k + 1
。以下是修改后的版本:
uidvcgyl2#
创建一个全局变量
int counter = 0;
所以第32行if语句应该如下所示:
然后你可以打印它在任何你想要的
pls upvote if correct:)