int string_length(char str[])
{
int i;
for(i=200; i>=0; i--)
{
//printf("%c \n",str[200]);
printf("%d",i);
if(str[i] !=NULL)
{
return(i);
}
}
}
如果字符串是 :eee rrr ,我想返回正确的字符串大小:它应该返回 7 但这总是返回 200
尽可能贴近您的原始代码,
int string_length(char str[])
{
int i;
for(i=0; i<200; ++i)
{
printf("[%d] : %c \n", i, str[i]);
if(str[i] == '\0')
{
return(i);
}
}
}
或者,如果你想要一个极简主义的功能:
int string_length(char* s)
{
return (*s)? string_length(s+1)+1 : 0;
}
您可以改用这个。它更简单
int string_length(char *str)
{
int i =0;
while(*str++) i++;
return i;
}
strlen()
你可以使用预定义的函数#include <string.h>
为什么从第 200 个字符开始?您无法预先知道该内存地址是否已分配。你冒着程序崩溃的风险。与此相关,您没有检查传递给函数的字符串是否有效(检查它是否具有非空地址)
而是从索引 0 开始,然后一路向上。
在 c/c++ 中,字符串的结尾用 '\0' 字符标记。尝试寻找这个而不是 NULL(除非您已将 NULL 定义为 '\0')