我正在尝试编写一个小程序,其中我基本上计算函数中的字符串长度,但由于某种原因它不会向命令行输出任何内容。
#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;
}
答案 0 :(得分:4)
您需要取消引用它,否则您将继续循环,因为substring
没有明显的方式变为0。
while (*substring)
^
那是因为你不是在寻找NULL
指针而是寻找NUL(\0
)字符。
答案 1 :(得分:2)
substring
是一个指针,只要它指向某处内存,它就永远不会为空(false)。
将while(substring)
替换为while(*substring)
,以代替\0
字符。
答案 2 :(得分:0)
搜索功能中“字符串”的含义是什么?您正在使用substring变量,但不是字符串变量。