【参考書】
・やさしいC++
【わからなかったところ】
・文字列の長さの求め方
・NULL文字について
以下に問題文を記述します。
文字列の長さを調べる関数int length(char* str)を作成してください。実際にキーボードから文字列を入力して文字列の長さを調べるコードを記述してください。
↓
【出力される文】
文字列を入力してください。 Hello 文字列の長さは5です。
これに対してわたしが書いてみたコードです。
#include<iostream> #include<cstring> using namespace std; int lenght(char*str){ int a=strlen(str); return a; } int main(){ char str[10]; cout<<"文字列を入力してください。"<<endl; cin>>str; int ans=lenght(str); cout<<"文字列の長さは"<<ans<<"です。"<<endl; }
stlen()関数を使って文字列を求めました。
ただ、参考書の解答は、whileを使って求めていました。
参考書の解答を記載します。
#include<iostream> using namespace std; int lenght(char* str){ int i=0; while(str[i]){ //ここがよくわからないところ i++; } return i; } int main(){ char str[100]; cout<<"文字列を入力してください。"<<endl; cin>>str; int ln=lenght(str); cout<<"文字列の長さは"<<ln<<"です。"<<endl; }
コメントの部分のwhileで行っている処理は、
引数としてもらったchar str[(cin)で入力した文字列]の要素を
(今回の場合はHello)
str[0] H ,str[1] e ,str[2] l ,str[3], l str[4] o ,str[5] '\0'
と確認していって、最後の'\0'(NULL文字)がきたとき、false(つまり0)になるからループを抜けられてi++をされない、i++されたのは、true(整数値をbool型に変換して、0以外の整数)の数という意味なのでしょうか?
現段階で、
・char型の配列の要素であるHなどを数値に置き換えて、判断しているのかわからない
・そもそもNULL文字が==0なのかがわからないし、Hなどの文字が0以外であるかどうかもわからない
ということで、どういう意味かわからなくなってしまいました。
わたしの文章も、わかりにくいかとおもいますが、わかってくれた方は教えていただけると嬉しいです。
よろしくおねがいします!

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/14 18:06
2017/11/14 18:35 編集
2017/11/14 18:28
2017/11/14 18:31
2017/11/14 18:34
2017/11/14 20:06
2017/11/14 23:48
2017/11/15 05:02 編集
2017/11/15 00:18 編集
2017/11/15 01:16
2017/11/15 02:26
2017/11/15 02:28
2017/11/15 02:46