用C语言写一个字符串中去除重复字符
时间: 2023-12-29 15:45:08 浏览: 70
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
printf("请输入一个字符串:");
fgets(str, 100, stdin); // 从标准输入获取字符串
int len = strlen(str);
for (int i = 0; i < len; i++)
{
if (str[i] == '\n') // 如果是换行符,说明字符串已经结束了
{
str[i] = '\0'; // 把换行符改成字符串结束符
break;
}
}
int hash[256] = {0}; // 哈希表,用于记录每个字符是否出现过
for (int i = 0; i < len; i++)
{
if (hash[str[i]] == 0) // 如果这个字符还没有出现过
{
putchar(str[i]); // 输出这个字符
hash[str[i]] = 1; // 标记这个字符已经出现过了
}
}
return 0;
}
```
相关问题
用C语言写一个字符串公式计算的代码
我可以回答这个问题。以下是一个简单的字符串公式计算的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EXPR_LEN 100
int main() {
char expr[MAX_EXPR_LEN];
printf("请输入一个字符串公式:");
fgets(expr, MAX_EXPR_LEN, stdin);
expr[strcspn(expr, "\n")] = '\0'; // 去掉换行符
int result = 0;
char *token = strtok(expr, "+-*/");
while (token != NULL) {
result += atoi(token);
token = strtok(NULL, "+-*/");
}
printf("计算结果为:%d\n", result);
return 0;
}
```
这个代码可以计算简单的加减乘除表达式,例如输入"1+2+3",输出"计算结果为:6"。
C语言写一个函数,去掉一个字符串中重复的字符
在C语言中,去除字符串中重复字符的一个常见方法是使用数组或者哈希表。这里我们使用一个动态分配的数组来存储已遇到过的字符及其索引。以下是实现该功能的一个简单函数:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 去除字符串中重复字符的函数
void removeDuplicates(char *str) {
int len = strlen(str);
if (len == 0 || str[0] == '\0') {
printf("Empty string or null pointer.\n");
return;
}
// 动态创建一个大小为len+1的字符数组,用于存储唯一的字符
char* uniqueChars = (char*)malloc((len + 1) * sizeof(char));
int index = 0;
for (int i = 0; i < len; ++i) {
char currentChar = str[i];
// 如果当前字符还没见过,将其添加到uniqueChars并更新索引
if (uniqueChars[index] == '\0' || uniqueChars[index] != currentChar) {
uniqueChars[index++] = currentChar;
}
}
uniqueChars[index] = '\0'; // 结束字符串
// 将去重后的字符复制回原字符串
strncpy(str, uniqueChars, index); // 注意:不会覆盖末尾空字符
free(uniqueChars); // 释放内存
}
int main() {
char str[] = "abbcccdddd";
removeDuplicates(str);
printf("String after removing duplicates: %s\n", str);
return 0;
}
```
这个函数首先判断输入字符串是否为空或空指针,然后创建一个动态数组,遍历输入字符串,如果字符未在数组中,则添加到数组。最后,将去重后的字符复制回原始字符串。
注意:此解决方案假设输入字符串包含的是ASCII字符,对于UTF-8或其他编码,需要使用更大的数据结构。
阅读全文