ポインタについて理解を深めるために演習問題をやるよ

演習2

昔やった文字配列を覚えているかな?

char str[] = "abc";

これは、“abc”という文字を1文字ずつstrと言う文字型の配列(char型の配列)に並べて初期化するという意味でした。
““(ダブルクォート)で初期化すると、文字配列の終わりには、自動的に終端文字(ナル文字)'\0'が追加される仕組みでした。
このナル文字を最後に於いておくことで、文字列がどこまで続いているかを判別できます(番兵法だね!)。

問題1
char str[] = "youetsu@jc-21.jp";
int length = 0;//文字列の長さ

変数lengthに文字列の長さを代入しなさい。(プログラム中で数えるんだよ)

解答

ダブルクォートで囲んで文字列を初期化すると(例:”文字列”)自動的に最後にナル文字('\0')が挿入される。
ちなみに、““で初期化するときは、自動でメモリの大きさが確定するので(文字列の長さからコンパイラが計算できるから)配列の要素数は省略できる。
問題を解くためには、ナル文字までの文字数を普通に一個ずつカウントすればよい。
カウンタ変数をint型などで用意して普通に数えるよ!

int main() {
	//初めにchar [] でやってみて
	//次にstring でやってみます
	char str[] = "youetsu@jc-21.jp";
	int length = 0;//文字列の長さ
	int i = 0;
	while(str[i] != '\0')
	{
		length++;	
		i++;
	}
	//C++使いはstringでやるとかっこいい
	std::cout << length << std::endl;
	std::string sstr(str);
	std::cout << sstr.length() << std::endl;
}

戻る