C/C++ ポインタ入門 > 文字列関数 > erase_tail
Nobuhide Tsuda
Nov-2013
末尾の n 文字を削除:void my_erase_tail(char *str, int n)
#include <string.h> // for strlen
void my_erase_tail(char *str, int n)
{
const int len = strlen(str);
if( n >= len ) { // 削除文字数が、文字列 str の長さよりも大きい場合
*str = '\0';
} else {
str[len - n] = '\0'; // 終端記号のヌル文字を削除位置に書き込む
}
}
解説:
- 最初に str が指す文字列の文字数を strlen() で計算し、len に代入します。
- n と len を比べ、n が len と等しいか大きい場合は、str を空文字列に設定します。
- n < len の場合は、後ろから n 番目のところにヌル文字('\0')を設定します。
- ヌル文字は文字列の終端記号で、それ以降は無視されるので、文字データを移動する必要はありません。
前:
| 次: