gpt4 book ai didi

c - 编写返回 char 数组的 C 函数的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:32:04 24 4
gpt4 key购买 nike

我对 Java 很熟悉,但对 C 不是很熟悉。

在 Java 中,如果我有一个方法执行某些操作并返回一个字符串,它看起来像:

private String doSomething(...) {
String s;
// do something;
return s;
}

C 中的等价句法是行不通的,而且是完全错误的:

char* doSomething(...) {
char s[100];
// do something;
return s;
}

我当然可以:

char* doSomething(...) {
char *s;
s = malloc(100 * sizeof(char));
// do something;
return s;
}

哪个可行(我认为!),但我很少看到代码这样做(是因为它不必要地填充了堆吗?)

最常见的是,我看到:

bool doSomething(char *s) {
// do something that copies chars to s
return true;
}

调用语句是:

char s[100];
doSomething(s);

如果我直到进入函数内部才知道 char 数组的大小怎么办?即我无法在函数外部声明 char 数组然后将其传入。

处理这种情况的正确方法是什么?

最佳答案

让调用代码负责分配内存。例2中传入buffer和buffer的长度:

bool doSomething(char *s, size_t buflen)
{
// do something that copies chars to s up to max of buflen
return true;
}

这往往会减少泄漏,因为调用代码控制着内存管理。

关于c - 编写返回 char 数组的 C 函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311131/

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