ソフトウェア開発 C言語

文字列の前後の空白を削除する(trim)

戻る


文字列の前後の空白を削除するコードは以下の通り。

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

void trim(char *buf)
{
    char *start, *end;
    char *p = buf;
    
    while(isspace(*p))
    {
        p++;
    }
    start = p;
    
    end = NULL;
    while(*p != '\0')
    {
        if(!isspace(*p))
        {
            end = p;
        }
        p++;
    }
    
    if (end != NULL)
    {
        memmove(buf, start, end - start + 1);
        buf[end - start + 1] = '\0';
    }
    else
        buf[0] = '\0';
}

#ifdef UNITTEST
int main(void)
{
    char s1[] = " \t \t test \t \t test test \t\t";
    char s2[] = " \t \t test \t \t test test";
    char s3[] = "test \t \t test test";
    char s4[] = " \t \t ";
    char s5[] = " \t a\t ";
    trim(s1);
    printf("\"%s\"\n", s1);
    trim(s2);
    printf("\"%s\"\n", s2);
    trim(s3);
    printf("\"%s\"\n", s3);
    trim(s4);
    printf("\"%s\"\n", s4);
    trim(s5);
    printf("\"%s\"\n", s5);
    return 0;
}
#endif

単体テストの実行結果は次の通り。

"test 	 	 test test"
"test 	 	 test test"
"test 	 	 test test"
""
"a"

ソース: trim.zip


国内格安航空券サイトe航空券.com

戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system