文字列のカウント

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Sirius

文字列のカウント

#1

投稿記事 by Sirius » 13年前

文字列のカウントをする関数を作ったのですが少しわからないところがあります。

コード:

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]
という実行結果になってしまいます。

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

non
記事: 1097
登録日時: 15年前

Re: 文字列のカウント

#2

投稿記事 by non » 13年前

最初のプログラムだと、str[count] が '\0' になったとき抜けますから、そのときのcountのまま、
後のプログラムだと、'\0'であることを判定したあと、count++が行われるので、1つ次に進みます。
non

Sirius

Re: 文字列のカウント

#3

投稿記事 by Sirius » 13年前

そうなんですね。

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

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

Sirius

Re: 文字列のカウント

#4

投稿記事 by Sirius » 13年前

そうなんですね。

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る