用c语言程序写一个输入字符串,并且将字符串按照asc码排序,并且删去重复的
时间: 2024-10-06 21:03:11 浏览: 21
在C语言中,你可以通过以下几个步骤编写一个简单的程序来实现这个功能:
首先,我们需要读取用户输入的字符串并将其转换为字符数组。然后,我们可以遍历该数组,利用ASCII码对字符进行排序。为了删除重复的字符,我们需要创建一个新数组来存储唯一的字符,并检查当前元素是否已存在于新数组中。
以下是一个基本的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 自定义函数,用于比较ASCII值
int compare(const void *a, const void *b) {
return (*(char *)a - *(char *)b);
}
void removeDuplicates(char *str, int length) {
char unique[length];
int j = 0;
// 遍历字符串,如果新位置unique[j]为空或当前字符小于unique[j]
for (int i = 1; i < length; i++) {
if (str[i] != unique[j] || unique[j] == '\0') {
unique[j++] = str[i]; // 将非重复字符添加到unique数组
}
}
// 结束后,unique[j]会有一个终止符'\0'
unique[j] = '\0';
// 把排序后的唯一字符复制回原字符串
strncpy(str, unique, j); // 注意,这里需要处理长度,避免越界
str[j] = '\0';
}
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
// 删除fgets留下的换行符
size_t len = strlen(input);
if (input[len - 1] == '\n') {
input[len - 1] = '\0';
}
int stringLength = strlen(input);
// 对字符串进行排序
qsort(input, stringLength, sizeof(char), compare);
// 删除重复的字符
removeDuplicates(input, stringLength);
printf("排序并去重后的字符串: %s\n", input);
return 0;
}
```