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总是
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以使用此代替。它更简单
int string_length(char *str)
{
int i =0;
while(*str++) i++;
return i;
}
您可以使用#include <string.h>
strlen()
答案 2 :(得分:0)
尽可能贴近原始代码 ,
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;
}
答案 3 :(得分:0)
你为什么从第200个角色开始?您无法预先知道是否已分配此内存地址。你冒着程序崩溃的风险。与此相关,您没有检查传递给函数的字符串是否有效(检查它是否具有非空地址)
而是从索引0开始,然后继续前进。
在c / c ++中,字符串的结尾标有'\ 0'字符。尝试寻找这个而不是NULL(除非你已经将NULL定义为'\ 0')