最近システム開発の現場では生産性やレスポンスの悪さを嫌って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系の実装などでもよく見かける常套ロジックです。