gpt4 book ai didi

c - 将空数组从函数传递到 main

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:56 24 4
gpt4 key购买 nike

我正在编写一个函数,它将一些字符数组作为来自 main() 的输入。 .此函数返回指向 char 的指针。存在三个问题:

  1. 如果一切顺利,这个函数应该返回一个指向所传递数组的子数组的指针。自 main()需要能够访问这个子数组,我可以使用 malloc在函数中创建这个全局子数组。
  2. 我需要传递空字符数组的函数 {}main() .
  3. 要进行错误检查,我需要通过 NULL指针。我只对第二个问题有疑问。如何将指针传递给空字符数组 {}main()

我不知道malloc在这里会有帮助。

**EDIT** :

好吧,我想我造成了一些困惑。让我具体说明具体问题。我在写信char * test(char * a, int start, int end, int len) 形式的函数.现在一个典型的对此的输入将是一个数组,如 {'a', 'b', 'c'}对于数组,start = 0 , end = 3 , len = 3 . len这是输入数组的长度。 start是起始位置。在这个例子中,它是 0 , 这是数组的开头。现在 end值表示从 start 开始取值并取 end start 中的元素数量值(value)。在这个例子中,它意味着,开始于 'a'并从那里取 3 个元素,即 'a' , 'b' , 和 'c' .并用这样的选择组成一个新的数组。在这里我们得到原始数组。所以让 a[] = {'a', 'b', 'c'} .然后 test(a , 0 , 3 , 3)将返回一个指向 {'a', 'b', 'c'} .同样,test(a , 0 , 2 , 3)将返回指向 {'a', 'b'} 的指针和 test(a , 1 , 2 , 3)将返回指向 {'b', 'c'} 的指针. 现在我希望函数返回 NULL指针如果 (start < 0) || (end < 0) || (0 == len) || (start+ end > len) .所以在以下情况下函数返回一个 NULL指针。 test(a , 0 , 4 , 3) test(a , 1 , 3 , 3) test(a , 2 , 2 , 3) test(a , 3 , 1 , 3) test(a , -1 , 2 , 3) test(a , -1 , -2 , 3)

如果a[] = {}然后test(a , 0 , 1 , 3)应该返回 NULL .我明白了。现在如果end值为 0 , 我想函数返回指向空数组的指针 {} .函数不应修改原始数组。

EDIT NO 2:

我正在做 http://admin.cs.mum.edu/Pretest/sampletest.htm 中的示例问题 3 .希望对您有所帮助...

最佳答案

您可以返回结构,该结构将包含指向将在您的函数中填充的地址和长度的指针。

struct ret_me
{
char *p;
int len;
}

.....

main()
{
.......
struct ret_me xxx;
xxx=your_fun(...);
if(xxx.len == 0)
...array is empty...
..........

}

关于c - 将空数组从函数传递到 main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708107/

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