ページ 11

文字列のカウント

Posted: 2013年6月15日(土) 13:32
by Sirius
文字列のカウントをする関数を作ったのですが少しわからないところがあります。

コード:

void put_str(char str[])
{
	int count = 0;
    while(str[count]) {
        count++;
        printf("%d\n", count);
    }
    
    printf("%d\n", count);
}
これだと例えば"abc"と入力したときは
[hr]1
2
3
3
[hr]
と0~3の4文字数分カウントされていますが、

コード:

void put_str(char str[])
{
	int count = 0;

	while(str[count++])
		printf("%d\n", count);

	printf("%d\n", count);
}
こっちだと
[hr]1
2
3
4
[hr]
という実行結果になってしまいます。

どちらもやっていることは同じだと思うのですが、何が違うのでしょうか?

Re: 文字列のカウント

Posted: 2013年6月15日(土) 13:52
by non
最初のプログラムだと、str[count] が '\0' になったとき抜けますから、そのときのcountのまま、
後のプログラムだと、'\0'であることを判定したあと、count++が行われるので、1つ次に進みます。

Re: 文字列のカウント

Posted: 2013年6月15日(土) 14:12
by Sirius
そうなんですね。

エラーの原因が簡単でとても驚きました。
長い時間悩んでいた自分がバカみたいです。

ありがとうございました。

Re: 文字列のカウント

Posted: 2013年6月15日(土) 14:12
by Sirius
そうなんですね。

エラーの原因が簡単でとても驚きました。
長い時間悩んでいた自分がバカみたいです。

ありがとうございました。