欢迎访问宙启技术站
智能推送

C语言 中怎么删除字符串空白符

发布时间:2023-05-14 14:53:48

在C语言中,我们经常需要对字符串进行处理,其中一个常见的操作就是删除字符串中的空白符。空白符包括空格、制表符和换行符等,如果字符串中有过多的空白符,就会影响程序的运行效率和用户的体验,因此需要将其删除。下面就让我们来看一下如何在C语言中删除字符串空白符。

方法一:使用标准库函数

C语言提供了一些常用的标准库函数,如strlen、isspace、strcpy、strncpy、strcat、strncat、strcmp、strncmp和strchr等,其中isspace函数用于检查一个字符是否是空白符,strchr函数用于查找一个字符在字符串中 次出现的位置。这些函数在C++中也可以使用。我们可以利用这些函数来删除字符串中的空白符,具体做法如下:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

char *delete_spaces(char *str)
{
    char *end;

    // 去掉字符串开头的空格
    while (isspace((unsigned char)*str))
        str++;

    if (*str == 0)  // 如果整个字符串都是空格
        return str;

    // 去掉字符串末尾的空格
    end = str + strlen(str) - 1;
    while (end > str && isspace((unsigned char)*end))
        end--;

    // 写入新结束符号
    *(end + 1) = 0;

    return str;
}

int main()
{
    char str[100];

    printf("请输入一个字符串:");
    fgets(str, sizeof(str), stdin);

    delete_spaces(str);

    printf("删除空白符后的字符串是:%s
", str);

    return 0;
}

在上面的代码中,我们首先定义了一个delete_spaces函数来删除字符串中的空白符。这个函数接受一个字符串作为参数,返回一个指针。在函数内部,我们使用while循环和isspace函数来去掉字符串开头和末尾的空格。如果整个字符串都是空格,直接返回原始字符串;否则,将新的结束符号写入字符串的末尾,并返回去掉空白符后的字符串。

在主函数中,我们使用fgets函数从键盘读取一个字符串,并调用delete_spaces函数来删除其中的空白符。最后,我们输出删除空白符后的字符串,以便用户查看。

方法二:使用指针操作

除了使用标准库函数外,我们还可以使用指针操作来删除字符串中的空白符。具体做法如下:

#include <stdio.h>

char *delete_spaces(char *str)
{
    char *p = str;

    // 删除字符串开头的空格
    while (*str == ' ' || *str == '\t' || *str == '
')
        str++;

    // 删除字符串中间的空格
    while (*str != 0) {
        if (*str == ' ' || *str == '\t' || *str == '
') {
            if (*(str - 1) != ' ' && *(str - 1) != '\t' && *(str - 1) != '
')
                *p++ = ' ';
        } else {
            *p++ = *str;
        }

        str++;
    }

    // 删除字符串末尾的空格
    if (*(p - 1) == ' ' || *(p - 1) == '\t' || *(p - 1) == '
')
        *(p - 1) = 0;
    else
        *p = 0;

    return str;
}

int main()
{
    char str[100];

    printf("请输入一个字符串:");
    fgets(str, sizeof(str), stdin);

    delete_spaces(str);

    printf("删除空白符后的字符串是:%s
", str);

    return 0;
}

上面的代码中,我们首先定义了一个delete_spaces函数来删除字符串中的空白符。这个函数接受一个字符串作为参数,返回一个指针。在函数内部,我们使用两个while循环来分别删除字符串开头和末尾的空格,并使用一个for循环来删除字符串中间的空格。在for循环中,我们使用一个指针p来指示新字符串的末尾,遍历原始字符串str,并根据需要将不包含在空白符中的字符添加到新字符串中。

在主函数中,我们使用fgets函数从键盘读取一个字符串,并调用delete_spaces函数来删除其中的空白符。最后,我们输出删除空白符后的字符串,以便用户查看。

总结

在C语言中,我们可以使用标准库函数或指针操作来删除字符串中的空白符。如果希望删除字符串中的其他字符,也可以根据需要进行修改。需要注意的是,在修改字符串内容时,必须确保字符串的长度不会超过其分配的内存大小,否则可能会引起程序崩溃或数据损坏。