大学の課題を解いていて、C言語での文字列切り出し処理がめちゃくちゃ大変だったので…
こうやればできたよ!という備忘録です。
目次
コード
char* substr(char* target, const char* input, size_t begin, size_t end) {
if (begin < strlen(input)) {
strncpy(target, input + begin, end + 1);
target[end - begin + 1] = '\0';
} else {
target[0] = '\0';
}
return target;
}
説明
char* strncpy(char* s1, const char* s2, size_t n);
はs2の文字列をn文字s1にコピーしてくれますが、NULL文字は追加してくれません。
そこで、後から自分で追加してあげる必要があります。
なので、まず最初に1文字多めにコピーしてから末尾をNULL文字に置き換える方法で実装しています。
コメント
- NULL文字を置く位置をうまく処理するのに苦戦しました…。