c - 为什么我的 strlen 函数保留 "crashing"?

标签 c crash strlen

<分区>

我正在尝试用 C 编写一个 strlen 函数,但它不起作用。

int strlen(char*string)
{
    int length=0;
    while(length[string]!='0')
    {
        ++length;
    }
    free(string);
    return length;
}

无论我运行编译器多少次,它都会一直崩溃。我的代码有什么问题?

最佳答案

您的 while 循环不应与 '0' 进行比较。
'0' (ascii) 的值为 48!

字符串不以 48 结尾。
字符串以 0 结尾。

你应该这样做:

while(length[string] != 0)

(关于您代码中其他问题的所有其他答案和评论也都是准确的)

关于c - 为什么我的 strlen 函数保留 "crashing"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075578/

相关文章:

c - strlen() 输出不正确

c - 替换字符串中的单词

windows - 当我从 Perl 调用命令时,如何抑制 "notify Microsoft"崩溃对话框?

c - 了解用于 strlen 优化的魔数(Magic Number) 0x07EFEFEFF

iphone - 应用程式当机-无法找出原因

android - 加载位图时出现 "BitmapFactory.decodeResource"应用程序崩溃

c - 使用 memset() 并解释函数的 size_t 数字

c - 信号量 shmget() semflg = 384 是做什么的?

c - 使用 strtok() 从文件读取数据然后将其存储在结构中时出现空条目?

c - 学习使用海湾合作委员会