我正在编写一个函数,它将一些char数组作为main()
的输入。此函数返回指向char的指针。有三个问题:
main()
需要能够访问此子数组,因此我可以在函数中使用malloc
来创建此全局子数组。{}
传递给main()
。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
个元素。在此示例中,它将表示从'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。希望有所帮助...
答案 0 :(得分:1)
您可以返回包含指向地址和指针的指针的结构。将在你的功能中填充的长度。
struct ret_me
{
char *p;
int len;
}
.....
main()
{
.......
struct ret_me xxx;
xxx=your_fun(...);
if(xxx.len == 0)
...array is empty...
..........
}