我正在尝试使用Visual Studio代码运行以下代码,该代码采用字符串参数并以字符为单位返回C语言中的字符串长度,但我得到了:
错误消息:
ISO C++禁止将字符串常量转换为"char*"[-Wwrite strings]
这是我的代码:
int str_length(char *mystring){
int i=0;
for(i=0; mystring[i]!=' '; i++);
return i;
}
void alpha(){
printf("%dn", str_length("-h=123"));
printf("%dn", str_length(""));
}
我被这个任务卡住了,也许你可以提供一个可能的解决方案,或者我必须更改的代码的某些部分?
这意味着您正在将程序编译为C++程序。
在C++中,与C相反的字符串文字具有常量字符数组的类型。
来自C++17标准(5.13.5字符串文字(
8还引用了普通字符串文字和UTF-8字符串文字到作为窄字符串文字窄字符串文字具有类型"n const char的数组">,其中n是字符串的大小定义如下,并且具有静态存储持续时间(6.7(
但即使在C中,函数参数也应具有限定符const
,因为函数不会更改传递的字符串。的功能如下
size_t str_length( const char *mystring )
{
size_t i = 0;
while ( mystring[i] != ' ' ) i++;
return i;
}
因此,在函数alpha
中,您需要编写
printf("%zun", str_length("-h=123"));
printf("%zun", str_length(""));
将转换说明符从CCD_ 3改变为CCD_。带符号类型int
可能不够大,无法存储任意字符串的长度。