gpt4 book ai didi

c - sizeof() 和 strlen() 之间的区别

转载 作者:行者123 更新时间:2023-11-30 20:01:22 24 4
gpt4 key购买 nike

我有一个如下所示的函数:

void functionname(int a, char* c){
sprintf(c, " ... some text ...");
}

上面的语句使用 sprintf 写入数组“c”。

对于我的系统,我认为我不能使用 sprint,因为我使用的是不同的(嵌入式)操作系统。

我的打印函数使用了一些看起来像 snprintf 的东西,我想知道如何使这个函数与 snprintf 一起工作。

我使用 strlen(c) 吗?当 c 为空时会发生什么?我应该使用 sizeof(c) 吗?

snprintf(c, sizeof(c), " ... text"); 

snprintf(c, strlen(c), "... text"); 

调用“functionname”的函数有一个数组,该数组将 c 的长度定义为 c[64]。我担心调用 sizeof(c) 会导致指针的大小。还担心strlen会导致数组不包含字符串时返回0。

所以问题是我如何告诉 snprintf 达到 c[64] 的这个值。

如何获取指针 c 指向的数组的大小,并将这个答案放入 snprintf 函数中。如果有一种方法可以使用与提供给 sprintf() 相同的变量从 sprintf() 转到 snprintf() ?如果 sprint() 函数的目标是 char 指针?

最佳答案

除了几个异常(exception),sizeof是编译时可评估的,并为您提供类型的大小。因此它无法知道运行时的事情,比如“字符串”的长度。

strlenconst char* 上运行并沿着内存从起始指针一直跟踪到第一个 \0已达到,然后返回其前进的次数。这很方便,因为它可以用来计算“字符串”的长度,假设它被建模为一系列以零字节终止的非零字节。

关于c - sizeof() 和 strlen() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32739696/

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