0

基本的に関数内の文字列の長さを数える小さなプログラムを作成しようとしていますが、何らかの理由でコマンドラインに何も出力されません。

#include <stdio.h>

int search (char* string, char* substring){
    int length = 0;
    while(substring){
        substring++;
        length++;
    }
    return length;

}


int main(int argc, const char * argv[])
{
    char string1[] = "hello world";
    char* string = string1;
    char substring1[] = "world";
    char* substring = substring1;

    int a = search(string,substring);

    printf("%d", a);
    return 0;
}
4

3 に答える 3

4

substring0になる明確な方法がないため、逆参照する必要があります。そうしないと、ループを続けます。

while (*substring)
       ^

NULLこれは、ポインターを探しているのではなく、NUL( \0)文字を探しているためです。

于 2013-02-07T23:14:53.843 に答える
2

substringはポインタです。メモリのどこかを指している限り、null(false)になることはありません。

代わりに、に置き換えwhile(substring)て文字while(*substring)を探します。\0

于 2013-02-07T23:15:06.733 に答える
0

検索機能の「文字列」のポイントは何ですか?部分文字列変数を使用していますが、文字列変数は使用していません。

于 2013-02-07T23:38:28.383 に答える