将空数组从函数传递给main

时间:2013-02-05 12:56:56

标签: c

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

  1. 如果一切正常,这个函数应该返回一个指向传递数组的子数组的指针。由于main()需要能够访问此子数组,因此我可以在函数中使用malloc来创建此全局子数组。
  2. 我需要函数将空char数组{}传递给main()
  3. 要进行错误检查,我需要传递NULL指针。我对第二个问题只有疑问。如何将指向空字符数组{}的指针传递给main()
  4. 我不知道malloc在这里是否有帮助。

    **EDIT**

    好吧,我觉得我引起了一些困惑。让我指出确切的问题。我在写信 char * test(char * a, int start, int end, int len)形式的函数。现在是典型的 输入到此数组的数组{'a', 'b', 'c'}start = 0end = 3len = 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时返回(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。希望有所帮助...

1 个答案:

答案 0 :(得分:1)

您可以返回包含指向地址和指针的指针的结构。将在你的功能中填充的长度。

struct ret_me
{
    char *p;
    int len;
}

.....

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

}