由于字符串文字可以像
一样初始化char myString [] = "somestring";
能够使用像
这样的函数似乎是合乎逻辑的int stringLength ( char * str )
{
char * c2 = str;
while (*c2++);
return (c2-str);
}
并将其称为
printf("%d",stringLength("somestring"));
然而,当我这样做时,我收到一个错误。
我有什么方法可以"演员" "something"
进入适当的东西以输入函数,或者我总是使用额外的行,如
char str [] = "somestring";
printf("%d",stringLength(str));
或者我还应该做些什么呢?
答案 0 :(得分:2)
char myString [] = "somestring";
创建一个可修改的字符数组。
使用时
printf("%d",stringLength("somestring"));
类似于:
char const* temp = "somestring";
printf("%d",stringLength(temp));
这就是编译器不喜欢的原因。
您可以更改函数以使用char const*
作为参数来使用它。
int stringLength ( char const* str )
{
char const* c2 = str;
while (*c2++);
return (c2-str);
}
答案 1 :(得分:1)
你知道你的函数“stringLength”永远不会改变/改变字符串的内容,所以使这个函数如此
int somefunc(const char* ptr)
{
const char* base=ptr;
while(*(ptr++));
return (ptr-base);
}
int main()
{
printf("%d",somefunc("HELLO"));
return 0;
}