我正在编写一个函数,它将一些 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
指针 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 。希望有帮助...