我目前試圖創建一個滿足這些以下要求的源代碼:我應該如何處理此C語句在給定要求的情況下的執行情況?
要求:
//從指數陣列的一部分的深層副本第一到最後一個索引
//包括的。如果成功,則返回一個指向新分配的intarr_t的指針,其中包含指定部分的副本。
//如果發生錯誤,即數組爲空,則第一個或最後一個超出界限,首先返回<,或者內存分配失敗,則返回空指針。
我已經完成了前兩個要求,但似乎我的第三個邏輯是錯誤的,無論我測試多少,我似乎無法找到發生的角落案例。
我的代碼:
intarr_t* intarr_copy_subarray(intarr_t* array,
unsigned int first,
unsigned int last)
{
intarr_t *tmp;
tmp = malloc((last-first)*sizeof(intarr_t));
// it seems that my if statement is not meeting the requirement in bold.
if(first>=0 && last<= array->len && array != NULL && first > last && tmp != NULL)
{
//perform copying here
return tmp; // pointer to new array containing the copied stuff
}
else
{
return NULL;
}
}
typedef struct {
int* data;
unsigned int len;
} intarr_t;
似乎有它時,它不應該返回NULL的情況下,它與我的if語句做。請注意,我正在傳遞我的函數一個typedef結構,其中包含指向數組的指針和長度,但這不是問題。我應該使用OR語句而不是AND語句嗎?
顯示intarr_t的定義。 – 2014-11-20 18:45:23
好的,請等一秒鐘。 – user152573 2014-11-20 18:45:50
如果last
2014-11-20 18:46:57