開始要素の添字と終端要素の添字が分かっていれば、単純なループで部分文字列の取り出しを実装することが出来ます。以下のプログラムは、ある文字列に対して、3文字目から5文字目を取り出しています。
#include<stdio.h> int main(){ char target[15] = "Aizu-wakamatsu"; char sub[3]; int i, j; for(i = 2, j = 0; i < 5; i++, j++){ sub[j] = target[i]; } printf("%s\n", sub); }
このプログラムの実行結果は以下のようになります。
zu-
部分文字列を取り扱う際に注意しなければいけないのが、プログラム上の文字列の添字は 0オリジン である点です。
上で挙げた例のプログラムでは、 3
文字目からの部分文字列が欲しいので、forループのカウンタ変数は1マイナスした値 2
で初期化してあります。
同じ操作を行う関数として、 string.h
ライブラリ内の strncpy
関数が挙げられます。
for文を使った部分文字列の抜き出しは、上記でも触れたように添字の操作が必要になるので、ライブラリに実装されている便利な関数を使うのも良いでしょう。
strncpy
関数の使い方は以下になります。
strncpy(コピー先の文字列変数ポインタ, コピー開始位置を示すポインタ, 開始位置から何文字抽出するかを示す整数)
オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。 |