1

我正在编写一个函数,它将一些 char 数组作为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 = 3len这是输入数组的长度。start是起始位置。在此示例中,它0是数组的开头。现在该end值表示从该值开始并且不从该值中start获取end任何元素start。在这个例子中,它意味着,'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指针 if (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[] = {} thentest(a , 0 , 1 , 3)应该返回NULL。我明白了这一点。现在如果end值是0,我想函数返回指向空数组的指针{}。函数不应修改原始数组。

EDIT NO 2:

我正在做来自http://admin.cs.mum.edu/Pretest/sampletest.htm的示例问题 3 。希望有帮助...

4

1 回答 1

1

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

struct ret_me
{
    char *p;
    int len;
}

.....

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

}
于 2013-02-05T13:05:15.387 回答