C言語でTrim(トリム)

最近システム開発の現場では生産性やレスポンスの悪さを嫌ってJAVA離れが加速しているのですが、仕事を失った若い技術者が新たなスキルとして実績のあるC言語を選択するケースがチラホラ見受けられます。

旧JAVAの技術者が大挙して.Netに乗り換えてしまい、今更後追いしても足下を見られるだけなので安定した仕事の多いC言語に魅力を感じる…ってことらしい。(苦笑)

んで。C言語の勉強を始めて間もない人から必ずといっていいほど文字列のTrim(トリム)の実装に関して聞かれるので参考までに。

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

// 文字列 s を前方トリムして返します.
char *ltrim(char *s)
{
    if (s && *s) {
        size_t len = strlen(s);
        size_t lws = strspn(s, " \n\r\t\v");
        memmove(s, s + lws, len -= lws);
        s[len] = '\0';
    }
    return s;
}
// 文字列 s を後方トリムして返します.
char *rtrim(char *s)
{
    if (s && *s) {
        size_t len = strlen(s);
        while (len && isspace(s[len-1])) --len;
        s[len] = '\0';
    }
    return s;
}
// 文字列 s をトリムして返します.
char *trim(char *s)
{
  return ltrim(rtrim(s));
}

UNIX系の実装などでもよく見かける常套ロジックです。

    このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

    reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

    頂戴したコメントは管理者に承認されるまで表示されません。また、メールアドレスが公開されることはありません。
    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。