您好,登錄后才能下訂單哦!
在C語言中,對字符串中的單詞進(jìn)行去重和排序需要一些基本的字符串操作和數(shù)據(jù)結(jié)構(gòu)。以下是一個簡單的示例,展示了如何實現(xiàn)這個功能:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <ctype.h>
// 比較函數(shù),用于 qsort
int cmp(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
// 去重函數(shù)
void remove_duplicates(char *words[], int *count) {
int i, j;
for (i = 0; i < *count - 1; i++) {
for (j = i + 1; j < *count; j++) {
if (strcmp(words[i], words[j]) == 0) {
memmove(&words[j], &words[j + 1], (*count - j - 1) * sizeof(char *));
(*count)--;
j--;
}
}
}
}
int main() {
char input[] = "hello world this is a test hello world";
char *word, *saveptr;
char *words[100]; // 假設(shè)單詞數(shù)量不超過100個
int count = 0;
// 將輸入字符串分割成單詞
word = strtok_r(input, " ", &saveptr);
while (word != NULL) {
words[count++] = word;
word = strtok_r(NULL, " ", &saveptr);
}
// 去重
remove_duplicates(words, &count);
// 排序
qsort(words, count, sizeof(char *), cmp);
// 輸出結(jié)果
for (int i = 0; i< count; i++) {
printf("%s ", words[i]);
}
printf("\n");
return 0;
}
這個程序首先使用strtok_r
函數(shù)將輸入字符串分割成單詞,并將它們存儲在words
數(shù)組中。然后,它調(diào)用remove_duplicates
函數(shù)去除重復(fù)的單詞,并使用qsort
函數(shù)對單詞進(jìn)行排序。最后,它遍歷并輸出排序后的單詞。
請注意,這個示例假設(shè)單詞數(shù)量不超過100個,并且每個單詞的長度不超過輸入字符串的長度。在實際應(yīng)用中,你可能需要根據(jù)實際情況調(diào)整這些限制。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。