Cでの文字列のスペース削除 – プログラミング – Home

Cでの文字列のスペース削除
 
通知
すべてクリア

Cでの文字列のスペース削除


kan
 kan
(@kan)
ゲスト
結合: 21年前
投稿: 11
Topic starter  

お世話になります。

Cで文字列の前後のスペースを削除するような関数はありますでしょうか?

VBでいうTrim関数のような・・・。

ご存知でしたらご教授お願い致します。


引用解決済
トピックタグ
tib
 tib
(@tib)
ゲスト
結合: 22年前
投稿: 468
 

C++でなら、CString::TrimLeft()・CString::TrimRight()というのがありますが、Cでは
ないんじゃないでしょうか。文字列の先頭からと末尾からとでスキャンして、どこからど
こまでを切り出せばいいかを判断する必要があります。


返信引用
kan
 kan
(@kan)
ゲスト
結合: 21年前
投稿: 11
Topic starter  

了解いたしました。ありがとうございます。


返信引用
RiSK
 RiSK
(@RiSK)
ゲスト
結合: 23年前
投稿: 13
 

// 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;
}


返信引用
kan
 kan
(@kan)
ゲスト
結合: 21年前
投稿: 11
Topic starter  

RiSK さん ありがとうございます。
参考にさせていただきます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました