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

您需要取消引用它,否则您将继续循环,因为没有明显的方法substring可以变为 0。

while (*substring)
       ^

那是因为您不是在寻找NULL指针,而是在寻找 NUL ( \0) 字符。

于 2013-02-07T23:14:53.843 回答
2

substring是一个指针,只要它指向某处内存,它就永远不会为空(假)。

替换while(substring)while(*substring)查找\0字符。

于 2013-02-07T23:15:06.733 回答
0

搜索功能中的“字符串”有什么意义?您正在使用 substring 变量,而不是 string 变量。

于 2013-02-07T23:38:28.383 回答