我正在尝试strlen用C 编写一个函数,但它不起作用.
int strlen(char*string)
{
int length=0;
while(length[string]!='0')
{
++length;
}
free(string);
return length;
}
Run Code Online (Sandbox Code Playgroud)
无论我运行多少次编译器,它都会继续崩溃.我的代码有什么问题?
abe*_*nky 15
你的while循环不应该与之比较'0'.
'0'(ascii)值48!
字符串不以48
结尾.字符串以0结尾.
你应该这样做:
while(length[string] != 0)
Run Code Online (Sandbox Code Playgroud)
(以及关于代码中其他问题的所有其他答案和评论也是准确的)
Luc*_*ore 14
你可能正在free记忆该功能不拥有的内存.
例如:
strlen("42");
Run Code Online (Sandbox Code Playgroud)
会崩溃因为"42"是一个字符串文字 - 你无法修改它.
请注意,这'0'不是字符串的终止字符,而是实际'0'字符.使用'\0'或0.
删除free它应该工作.
我也会选择更惯用的string[length],如果- 请注意,这是非法的string == NULL,所以在那里进行空检查.
| 归档时间: |
|
| 查看次数: |
3709 次 |
| 最近记录: |