C言語には文字列の先頭にある空白を削除する関数やマクロは存在しません.したがってプログラマが自分でこの機能を実装する必要があります.
実装は以下の手順で行うことが出来ます.
以下に実装例を示します.
/*
* 文字列の先頭にある空白を削除する
* @param[in] s 対象文字列
* @return 削除した空白の数を返す
*/
int TrimStart(char *s) {
int i = 0;
/* 空ポインタか? */
if ( s == NULL ) { /* yes */
return -1;
}
/* 先頭から順に空白でない位置を探す */
while ( s[i] != '\0' && s[i] == ' ' ) i++;
strcpy(s, &s[i]);
return i;
}
上記で定義した TrimStart 関数を使用して,文字列の先頭にある空白を削除するサンプルプログラムを示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* functions */
int TrimStart(char *s);
/* main */
int main(void) {
int ret;
char snoopy[] = " SNOOPY";
ret = TrimStart(snoopy);
printf("変換後: \"%s\"\n", snoopy);
printf("削除した空白: %d文字\n", ret);
return EXIT_SUCCESS;
}
/*
* 文字列の先頭にある空白を削除する
* @param [in] s 対象文字列
* @return 削除した空白の数を返す
*/
int TrimStart(char *s) {
int i = 0;
/* 空ポインタか? */
if ( s == NULL ) { /* yes */
return -1;
}
/* 先頭から順に空白でない位置を探す */
while ( s[i] != '\0' && s[i] == ' ' ) i++;
strcpy(s, &s[i]);
return i;
}
実行結果は以下のようになります.
変換後: "SNOOPY" 削除した空白: 3文字