[英]Passing an empty array from function to main
我正在編寫一個函數,該函數需要一些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'}
的指針{'b', 'c'}
。 現在,如果(start < 0) || (end < 0) || (0 == len) || (start+ end > len)
我希望該函數返回NULL
指針。 (start < 0) || (end < 0) || (0 == len) || (start+ end > len)
(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...
..........
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.