簡體   English   中英

將空數組從函數傳遞給main

[英]Passing an empty array from function to main

我正在編寫一個函數,該函數需要一些char數組作為main()的輸入。 該函數返回指向char的指針。 存在三個問題:

  1. 如果一切正常,則此函數應返回指向傳遞數組的子數組的指針。 由於main()需要能夠訪問此子數組,因此我可以在函數中使用malloc創建此全局子數組。
  2. 我需要將空char數組{}傳遞給main()的函數。
  3. 要進行錯誤檢查,我需要傳遞NULL指針。 我只對第二個問題有疑問。 如何將指向空字符數組{}指針傳遞給main()

我不知道malloc在這里是否會有所幫助。

**EDIT**

好吧,我想我引起了一些混亂。 讓我指定確切的問題。 我正在編寫形式為char * test(char * a, int start, int end, int len)的函數。 現在,對此的典型輸入將是像{'a', 'b', 'c'}的數組作為數組, start = 0end = 3len = 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM