C语言: 删除字符串中连续重复的非字母数字字符
C语言: 删除字符串中连续重复的非字母数字字符
本文提供一个C语言代码示例,用于删除字符串中连续重复的非字母数字字符,并提供代码解释和使用方法。
问题描述:
输入一个字符串,删除其中连续重复的非字母数字字符,并输出处理后的字符串。
例如:
输入:'11+++2==13\r\n'输出:'11+2=13'
**C语言代码:**c#include <stdio.h>#include <string.h>
void removeDuplicates(char* str) { int n = strlen(str);
if (n <= 1) { return; // 字符串长度小于等于1,无需处理 }
int i, j; for (i = 1, j = 1; i < n; i++) { if ((str[i] != str[i-1] || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= '0' && str[i] <= '9'))) { str[j++] = str[i]; } }
str[j] = '�'; // 设置新的字符串结束符}
int main() { char str[51]; printf('请输入字符串:'); fgets(str, 51, stdin); str[strcspn(str, ' ')] = '�'; // 去除fgets读取的换行符
removeDuplicates(str);
printf('处理后的字符串:%s
', str);
return 0;}
代码解释:
-
removeDuplicates函数: - 接受一个字符串指针str作为参数。 - 使用两个指针i和j遍历字符串。i用于读取原始字符串,j用于构建新的字符串。 - 遍历过程中,如果当前字符str[i]与前一个字符str[i-1]相同且不是字母或数字,则跳过该字符,否则将str[i]复制到str[j]并递增j。 - 最后,将str[j]设置为'�',表示字符串结束。 -
main函数: - 定义一个长度为 51 的字符数组str用于存储输入的字符串。 - 使用fgets函数获取用户输入的字符串,并使用strcspn函数将换行符替换为字符串结束符。 - 调用removeDuplicates函数处理字符串。 - 使用printf函数输出处理后的字符串。
使用方法:
- 将代码保存为
.c文件,例如remove_duplicates.c。2. 使用 C 编译器编译代码:gcc remove_duplicates.c -o remove_duplicates3. 运行编译后的程序:./remove_duplicates4. 按照提示输入字符串,程序会输出处理后的结果。
注意:
- 此代码假设输入的字符串长度不超过 50 个字符。- 可以根据需要修改代码,例如支持更长的字符串或处理其他类型的字符。
原文地址: https://www.cveoy.top/t/topic/s2x 著作权归作者所有。请勿转载和采集!