首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言字串去除空格完整解法:移除所有空格與修剪首尾空白兩種需求

     編輯:關於C語言

C 語言字串去除空格完整解法:移除所有空格與修剪首尾空白兩種需求

需求一:移除所有空白字元 (含定位鍵、換行)

void remove_all_space(char *dst, const char *src) {
    while (*src) {
        if (!isspace((unsigned char)*src)) *dst++ = *src;
        ++src;
    }
    *dst = '\0';
}

需求二:修剪首尾空白,保留中間 (類似 Python strip)

void trim(char *dst, const char *src) {
    // 找第一個非空白
    const char *start = src;
    while (*start && isspace((unsigned char)*start)) ++start;
    // 找最後一個非空白
    const char *end = src + strlen(src) - 1;
    while (end >= start && isspace((unsigned char)*end)) --end;
    // 複製
    size_t len = (end >= start) ? (end - start + 1) : 0;
    for (size_t i = 0; i < len; ++i) dst[i] = start[i];
    dst[len] = '\0';
}

完整測試程式

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

int main() {
    const char *test = "  \tHello World\n  ";
    char buf1[100], buf2[100];

    remove_all_space(buf1, test);
    printf("移除所有: [%s]\n", buf1); // [HelloWorld]

    trim(buf2, test);
    printf("修剪首尾: [%s]\n", buf2); // [Hello World]

    return 0;
}

關鍵點

  • 使用 isspace 支援所有空白字元 (空格、\t、\n、\r、\v、\f)。
  • (unsigned char) 轉型避免負值導致未定義行為。
  • 原地修改版本需小心來源與目的地重疊,建議用輔助緩衝區或逆向複製。
  • C++ 可用 std::string + erase/remove_if 或 Boost trim。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved