【C语言】删除字符串中的空格

本文介绍了一个C语言函数,用于接收字符串作为输入,通过指针操作删除其中的空格,并提供了一个测试示例。

编写一个函数接受一个字符串作为参数,并删除字符串中的空格。

函数代码

#include <stdio.h>

char *strDelSpace(char *str)
{
    char *pc_inspect = str;
    char *pc_locate = str;

    // 检查两个指针是否指向相同地址且这个地址是否指向空字符
    while (pc_inspect == pc_locate && *pc_inspect)
    {
        // 检测到空格时,inspect指针跳过所有空格,直到指向字符串第一个非空格字符
        if (*pc_inspect == ' ')
        {
            while (*pc_inspect == ' ')
                pc_inspect++;
        }
        else
        {
            pc_inspect++;
            pc_locate++;
        }
    }

    // (inspect和locate指针不再指向同一个地址,即检测到了空格)对字符串逐个进行赋值
    while (*pc_inspect)
    {
        // 跳过空格
        while (*pc_inspect == ' ')
            pc_inspect++;

        *pc_locate = *pc_inspect;

        pc_locate++;
        pc_inspect++;
    }

    // 在字符串末尾添加空字符
    *pc_locate = '\0';

    return str;
}

函数测试

#include <stdio.h>

char *strDelSpace(char *str);

int main(int argc, char const *argv[])
{
    char str1[] = "this is a string";
    char str2[] = "thisanotherstr ing";
    char str3[] = "   thisanotherstr ing";
    
    strDelSpace(str1);
    strDelSpace(str2);
    strDelSpace(str3);

    printf("*%s*\n", str1);
    printf("*%s*\n", str2);
    printf("*%s*\n", str3);

    return 0;
}

char *strDelSpace(char *str)
{
    char *pc_inspect = str;
    char *pc_locate = str;

    // 检查两个指针是否指向相同地址且这个地址是否指向空字符
    while (pc_inspect == pc_locate && *pc_inspect)
    {
        // 检测到空格时,inspect指针跳过所有空格,直到指向字符串第一个非空格字符
        if (*pc_inspect == ' ')
        {
            while (*pc_inspect == ' ')
                pc_inspect++;
        }
        else
        {
            pc_inspect++;
            pc_locate++;
        }
    }

    // (inspect和locate指针不再指向同一个地址,即检测到了空格)对字符串逐个进行赋值
    while (*pc_inspect)
    {
        // 跳过空格
        while (*pc_inspect == ' ')
            pc_inspect++;

        *pc_locate = *pc_inspect;

        pc_locate++;
        pc_inspect++;
    }

    // 在字符串末尾添加空字符
    *pc_locate = '\0';

    return str;
}

输出

>
*thisisastring*
*thisanotherstring*
*thisanotherstring*
### C语言删除字符串中所有空格的解决方案 在C语言中,可以通过遍历字符串并跳过空格字符的方式实现删除字符串中的所有空格。以下是一个完整的解决方案,结合了提供的引用内容以及专业实现方法。 #### 方法描述 通过定义一个函数 `strip_spaces` 来实现删除字符串中的空格。该函数会遍历输入字符串中的每个字符,并将非空格字符依次复制到原字符串的前面位置,最终在新字符串末尾添加结束符 `\0`[^3]。 #### 实现代码 以下是基于上述方法的完整代码示例: ```c #include <stdio.h> #include <string.h> // 函数删除字符串中的所有空格 void strip_spaces(char *str) { int i, j = 0; for (i = 0; str[i] != '\0'; i++) { if (str[i] != ' ') { // 如果当前字符不是空格 str[j++] = str[i]; // 将非空格字符复制到前面 } } str[j] = '\0'; // 在新字符串末尾添加结束符 } int main() { char str[100]; printf("请输入一段包含空格字符串:\n"); scanf("%[^\n]", str); // 使用正则表达式读取带空格字符串[^2] strip_spaces(str); // 调用函数删除空格 printf("删除空格后的字符串: %s\n", str); return 0; } ``` #### 代码解析 1. **输入字符串**:使用 `scanf("%[^\n]", str)` 读取包含空格字符串[^2]。 2. **删除空格逻辑**: - 定义两个索引变量 `i` 和 `j`,分别用于遍历原始字符串和记录非空格字符的位置。 - 遍历字符串时,遇到非空格字符将其赋值给 `str[j]`,同时递增 `j`。 - 遍历完成后,在 `str[j]` 处添加字符串结束符 `\0`。 3. **输出结果**:打印删除空格后的字符串。 #### 注意事项 - 输入字符串时需要确保缓冲区大小足够大,以避免溢出。 - 如果字符串可能包含多个连续空格或首尾空格,上述方法同样适用,因为只保留非空格字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值