描述 对一组连续的字符串(只包含数字与字符)去除重复的字符,并输出去重后的字符串(字符之间的相对位置不能改变) 输入 从键盘输入一组字符串(只包含字母与数字)。 输出 去重后的字符串 用C语言写一个代码
时间: 2024-12-12 22:19:42 浏览: 10
要在C语言中编写一个程序,去除连续字符串中重复的字符并保持其原始顺序,可以使用一个动态数组存储已见过的字符,同时遍历输入字符串。以下是相应的C代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
// 动态字符数组
char* uniqueChars(char input[], int len) {
bool seen[128]; // 假设ASCII字符范围内的字符
memset(seen, false, sizeof(seen));
int j = 0;
// 遍历输入字符串
for (int i = 0; i < len; i++) {
char c = input[i];
if (!seen[c]) {
// 如果字符未见,则添加到结果字符串和seen数组中
input[j++] = c;
seen[c] = true;
}
}
// 结束后在末尾加上空字符终止字符串
input[j] = '\0';
// 返回新的字符串地址
return input;
}
int main() {
char input[100]; // 假定足够大的输入缓冲区
printf("请输入一组字符串(只包含字母与数字): ");
fgets(input, sizeof(input), stdin); // 使用fgets获取用户输入,防止换行符污染
// 去除末尾换行符
input[strcspn(input, "\n")] = '\0';
int inputLen = strlen(input);
char result[strlen(input) + 1]; // 新字符串长度可能比原短,因此加1以防溢出
strncpy(result, uniqueChars(input, inputLen), strlen(result)); // 将去重后的字符串复制到新数组
printf("去重后的字符串: %s\n", result);
return 0;
}
```
当你运行这个程序时,它会提示你输入一个字符串,然后输出去重后的字符串。
阅读全文