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;}

代码解释:

  1. removeDuplicates 函数: - 接受一个字符串指针 str 作为参数。 - 使用两个指针 ij 遍历字符串。i 用于读取原始字符串,j 用于构建新的字符串。 - 遍历过程中,如果当前字符 str[i] 与前一个字符 str[i-1] 相同且不是字母或数字,则跳过该字符,否则将 str[i] 复制到 str[j] 并递增 j。 - 最后,将 str[j] 设置为 '�',表示字符串结束。

  2. main 函数: - 定义一个长度为 51 的字符数组 str 用于存储输入的字符串。 - 使用 fgets 函数获取用户输入的字符串,并使用 strcspn 函数将换行符替换为字符串结束符。 - 调用 removeDuplicates 函数处理字符串。 - 使用 printf 函数输出处理后的字符串。

使用方法:

  1. 将代码保存为 .c 文件,例如 remove_duplicates.c。2. 使用 C 编译器编译代码:gcc remove_duplicates.c -o remove_duplicates3. 运行编译后的程序:./remove_duplicates4. 按照提示输入字符串,程序会输出处理后的结果。

注意:

  • 此代码假设输入的字符串长度不超过 50 个字符。- 可以根据需要修改代码,例如支持更长的字符串或处理其他类型的字符。
C语言: 删除字符串中连续重复的非字母数字字符

原文地址: https://www.cveoy.top/t/topic/s2x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录