お世話になります。
Cで文字列の前後のスペースを削除するような関数はありますでしょうか?
VBでいうTrim関数のような・・・。
ご存知でしたらご教授お願い致します。
C++でなら、CString::TrimLeft()・CString::TrimRight()というのがありますが、Cでは
ないんじゃないでしょうか。文字列の先頭からと末尾からとでスキャンして、どこからど
こまでを切り出せばいいかを判断する必要があります。
了解いたしました。ありがとうございます。
// trim.c
/*
* MFC CString::TrimRight() CString::TrimLeft() のパクリ
*/
#include <ctype.h>
#include <string.h>
#include <stdio.h>
char *TrimLeftSpace(char *str)
{
const char *p = str;
while (isspace(*p)) {
++p;
}
if (str != p) {
memmove(str, p, strlen(p)+1);
}
return str;
}
char *TrimRightSpace(char *str)
{
char *p = str;
char *last = NULL;
while (*p != '\0') {
if (isspace(*p)) {
if (last == NULL) {
last = p;
}
} else {
last = NULL;
}
++p;
}
if (last != NULL) {
*last = '\0';
}
return str;
}
char *TrimSpace(char *str)
{
return TrimRightSpace(TrimLeftSpace(str));
}
int main(void)
{
char left[] = <-left space.;
char right[] = right space.-> ;
char space[] = <-left space. right space.-> ;
printf(\%s\\n, left);
TrimLeftSpace(left);
printf(\%s\\n\n, left);
printf(\%s\\n, right);
TrimRightSpace(right);
printf(\%s\\n\n, right);
printf(\%s\\n, space);
TrimSpace(space);
printf(\%s\\n\n, space);
return 0;
}
RiSK さん ありがとうございます。
参考にさせていただきます。