C中的函数计算字符数组

时间:2013-02-07 23:13:14

标签: c

我正在尝试编写一个小程序,其中我基本上计算函数中的字符串长度,但由于某种原因它不会向命令行输出任何内容。

#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;
}

3 个答案:

答案 0 :(得分:4)

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

while (*substring)
       ^

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

答案 1 :(得分:2)

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

while(substring)替换为while(*substring),以代替\0字符。

答案 2 :(得分:0)

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