gpt4 book ai didi

C: 自定义 strlen() 库函数

转载 作者:行者123 更新时间:2023-12-02 09:23:56 25 4
gpt4 key购买 nike

我创建了我的 strlen() 函数版本。

unsigned int my_strlen(char *p)
{
unsigned int i = 0;

while(*p!='\0')
{
i++;
p++;
}

return i;
}

每次运行时它都会给我正确的输出。但是我的同事说这段代码可能会在字符长度大于 1 字节 的系统上引起问题。是这样吗??

于是他们修改了代码如下:

unsigned int my_strlen(char *p)
{
unsigned int i = 0;
char *start = p;

while(*p!='\0')
{
i++;
p++;
}

return p - start;
}

我一直认为在 C 中一个字符是 1 个字节长。

前者的片段是否优于后者,反之亦然??

最佳答案

在 C 中保证 sizeof(char) 为 1,所以你是对的。

为了增加一些真实性,直接引用 C11,章节 §6.5.3.4,sizeof_Alignof 运算符

When sizeof is applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1. [....]

就是说,指针算法尊重数据类型,所以第二种方法无论如何在预期方面没有任何意义。在这两种情况下,您都在 p 上操作,它是 char*,所以效果是一样的。

关于C: 自定义 strlen() 库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com