- ベストアンサー
文字除去
こんにちは、 c/c++ 初心者です(PG経験はたっぷりです) やりたい事は、time(hh:mi:ss)文字列(string or char)から、コロンを除去するのですが、素敵な方法が思いつきません。 今は単純に、文字列のpositionを固定で指定してstrcatしてます、目的は果たせてましたが、、、 他に、素敵な方法はありましたら、ご教示ください。 文字列:16:24:55 を 162455 に編集する。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★単純にコロン文字以外をコピーすればよい。 ・PG経験はたっぷりあるみたいですが、C/C++ のポインタは分かりますか? ポインタを使って別領域にコロン以外の文字をコピーすれば簡単ですよ。 下にそのサンプルを載せます。 サンプル: char *coroncut( char buff[], const char string[] ) { char *dest; for ( dest = buff ; *string != '\0' ; string++ ){ if ( *string != ':' ){ *dest++ = *string; } } *dest = '\0'; return buff; } その他: ・上記の関数の第一引数にコピー先領域を、第二引数に時間文字列を渡して下さい。 つまり、 char buff[ 16 ]; coroncut( buff, "16:24:55" ); と指定します。すると buff にはコロン文字以外の数字 162455 がセットされます。 ・以上。今後の参考に!
その他の回答 (2)
- DT200
- ベストアンサー率38% (63/164)
こんな感じでどうでしょう void rmcolon( char *str ) { char *p; p = str; while( *str != '\0' ){ if( *str != ':' ){ *p = *str; p++; } str++; } *p = '\0'; }
お礼
早速の回答ありがとうございます。 ポインタをずらして行って、 notの場合だけコピーするのですね。C言語っぽいですね。 ありがとうございます。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★追記。 ・スペルミスしてしまいました。 間違い⇒coroncut 正しい⇒coloncut でした。
お礼
早速の回答ありがとうございます。 ポインタをずらして行って、 notの場合だけコピーするのですね。C言語っぽいですね。 ※なぜか、殆どこのままソースに移植したら除去できませんでした。。。 :が;でした。。。自分、目があまり良くないので、違うことにきずくまで、しばらく掛かりました。(・o・) ありがとうございました。