C言語で文字列の前後の空白を削除するには?

C言語では、以下の方法で文字列の前後の空白文字を消すことができます。

  1. isspace()関数を使用して文字が空白文字であるかどうかを判定します。空白文字には空白、タブ、改行などが含まれます。
  2. 文字列の先頭から文字を先頭から非空白文字を見つけるまで走査して、その位置を記録する。
  3. 文字列の最後尾から文字を繰り返し、非空白文字が見つかるまで文字位置を保持する。
  4. 記録されている位置に基づいて、文字列を新しい部分文字列に分割し、前后の空白を取り除いた文字列を作成します。

以下のコードがサンプルです:

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

char* trim(char* str) {
    size_t len = strlen(str);
    size_t start = 0, end = len - 1;
    
    // 从开头找到第一个非空白字符的位置
    while (isspace(str[start])) {
        start++;
    }
    
    // 从末尾找到第一个非空白字符的位置
    while (end > start && isspace(str[end])) {
        end--;
    }
    
    // 截取子字符串
    memmove(str, str + start, end - start + 1);
    str[end - start + 1] = '\0';
    
    return str;
}

int main() {
    char str[] = "   hello world    ";
    printf("Before: '%s'\n", str);
    printf("After: '%s'\n", trim(str));
    
    return 0;
}

実行結果を以下に示します。

Before: '   hello world    '
After: 'hello world'
bannerAds