打印
[应用方案]

删除字符串多余的字符

[复制链接]
1467|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eefas|  楼主 | 2024-1-21 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
算法题目:手动输入一个字符串,删除过滤掉不是英文字母的字符,并输出过滤后的字符串。


编程思路

编程思路:


1、用函数fgets实现,从键盘输入一个字符串;


2、逐一判断字符串中,每个字符是否是“A到Z”和“a到z”字符,如果是保留,不是删除。


3、输出过滤后的字符串。


程序范例


#include<stdio.h>


int main()

{

    char niu[60];

    int i, j;



    printf("请输入一个字符串: ");

    fgets(niu, (sizeof niu/sizeof niu[0]), stdin);



    for(i=0;niu!='\0';++i)

    {

    while (!( (niu >= 'a' && niu <= 'z') || (niu >= 'A' && niu <= 'Z') || niu == '\0') )

        {

            for(j = i; niu[j] != '\0'; ++j)

            {

                niu[j] =niu[j+1];

            }

            niu[j] = '\0';

        }


    }


    printf("输出结果: ");


    puts(niu);

    return 0;

}

使用特权

评论回复
沙发
tpgf| | 2024-2-2 11:44 | 只看该作者
这个跟需要删除的字符的种类不同 算法也会不同

使用特权

评论回复
板凳
zljiu| | 2024-2-2 12:15 | 只看该作者
感觉这个程序里边最关键的是如何正确识别特殊字符

使用特权

评论回复
地板
nawu| | 2024-2-2 12:48 | 只看该作者
当前思路仅仅针对于普通的英文字母

使用特权

评论回复
5
gwsan| | 2024-2-2 13:35 | 只看该作者
如何应对输入的字符是非法字符呢

使用特权

评论回复
6
aoyi| | 2024-2-2 17:58 | 只看该作者
这里输入端是使用的什么形式的接口呢

使用特权

评论回复
7
tfqi| | 2024-2-2 18:31 | 只看该作者
应该判定的完善一点 比如 如果输入的是两个以上字符怎么办呢

使用特权

评论回复
8
tfqi| | 2024-2-2 18:31 | 只看该作者
这个程序只能提供一种思路 并不是一个完整的实用的程序

使用特权

评论回复
9
biechedan| | 2024-3-4 17:08 | 只看该作者
#include <stdio.h>  
#include <string.h>  
  
// 函数原型声明  
void removeDuplicateChars(char *str);  
  
int main() {  
    char myString[] = "aabbbcccddeee";  
    printf("Original string: %s\n", myString);  
  
    removeDuplicateChars(myString);  
    printf("Processed string: %s\n", myString);  
  
    return 0;  
}  
  
// 删除字符串中多余的字符(即连续的重复字符)  
void removeDuplicateChars(char *str) {  
    if (str == NULL) {  
        return;  
    }  
  
    int length = strlen(str);  
    if (length <= 1) {  
        return;  
    }  
  
    char *writePtr = str; // 指向当前写入位置的指针  
    char *readPtr = str;  // 指向当前读取位置的指针  
  
    while (*readPtr) {  
        // 如果当前字符与前一个字符不同,则写入  
        if (*readPtr != *(readPtr - 1)) {  
            *writePtr++ = *readPtr;  
        }  
        readPtr++; // 无论如何都向前移动读取指针  
    }  
  
    // 在字符串末尾添加空字符以标记字符串结束  
    *writePtr = '\0';  
}

使用特权

评论回复
10
fengm| | 2024-3-5 16:26 | 只看该作者
删除字符串的前导空白符和后随空白符,以及非空白字符之间的连续多个空白符,只保留一个。

使用特权

评论回复
11
abotomson| | 2024-3-7 21:07 | 只看该作者
可以使用指针直接操作字符串,删除多余的字符。例如,可以遍历字符串,找到需要删除的字符,并将其后面的字符向前移动。

使用特权

评论回复
12
sdCAD| | 2024-3-7 23:35 | 只看该作者
手动遍历字符串,查找并替换所有不需要的字符(如空格、制表符等)为空字符('\0')。

使用特权

评论回复
13
lzbf| | 2024-3-9 16:32 | 只看该作者
首先计算字符串str1的长度,然后使用strncpy()函数将str1中的字符复制到str2中,最后在str2的末尾添加字符串结束符'\0'。

使用特权

评论回复
14
sesefadou| | 2024-3-11 13:58 | 只看该作者
某些单片机开发环境提供了特定的库函数来处理字符串,这些函数可能更高效或者更适合特定硬件平台。

使用特权

评论回复
15
sheflynn| | 2024-3-11 21:51 | 只看该作者
在单片机编程中,有时需要删除字符串中多余的字符。这可以通过编写一个循环来实现,遍历字符串,直到遇到终止符(通常是'\0')为止。

使用特权

评论回复
16
sesefadou| | 2024-3-12 14:01 | 只看该作者
#include <string.h>

void removeExtraChars(char *str) {
    int len = strlen(str);
    int i;

    for (i = 0; i < len; i++) {
        if (str[i] == '\0') {
            break;
        }
    }

    for (int j = i; j < len; j++) {
        str[j] = '\0';
    }
}

使用特权

评论回复
17
loutin| | 2024-3-12 16:22 | 只看该作者
使用 strcpy 函数将目标字符串复制到一个新的字符串缓冲区,然后使用 strlen 函数计算原始字符串和新字符串缓冲区中字符的数量。最后,将新字符串缓冲区中多余的空格字符删除,直到达到所需长度。

使用特权

评论回复
18
maqianqu| | 2024-3-16 11:12 | 只看该作者
可以通过循环遍历字符串的方式,逐个复制字符,直到遇到字符串结束符'\0'。

使用特权

评论回复
19
zerorobert| | 2024-3-17 09:41 | 只看该作者
通过逐一判断字符串中的每个字符是否为“A到Z”或“a到z”,如果是则保留,否则删除。

使用特权

评论回复
20
iyoum| | 2024-3-17 21:06 | 只看该作者
许多单片机的库函数中提供了字符串处理函数,如C标准库中的strncpy()、strcat()、strcpy()等。可以利用这些函数实现删除字符串多余字符的操作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

2589

帖子

2

粉丝