我有一個奇怪的問題,我不知道原因,所以我想不出解決方案來修復它。如果我將數組作爲參數傳遞,從數組中移除結構的函數不起作用
我的問題:
我有一個removeEntry
功能與結構的數組作爲參數,但不知何故,此功能不起作用。
在我的代碼的早期版本中,我在main
函數之外(每個函數之外)聲明瞭我的結構數組,然後它就起作用了。但是因爲我現在在我的main
函數中創建了我的struct數組,所以我必須將它作爲參數,現在我的removeEntry
函數不起作用。
代碼不工作:
void removeEntry(struct entry entries[])
{
int entryNumber;
int nrBytes = sizeof(entries);
int arrayLength = nrBytes/sizeof(entries[0]);
printf("\nEnter entry number to delete: ");
scanf("%d",&entryNumber);
while (scanfOnlyNumber(entryNumber) == false || entryNumber == 0 || entries[entryNumber].entry_number == 0)
{
printf("\nEnter a legit entry number to delete: ");
scanf("%d", &entryNumber);
// Tell the user that the entry was invalid
}
int i = 0;
for(i = entryNumber; i < arrayLength - 1; i++)
{
entries[i] = entries[i + 1]; //removes element and moves every element after that one place back.
}
updateEntryNumber(entries);
printf("\nEntry %d removed succesfully, and entry numbers updated!\n", entryNumber);
}
我的老師告訴我,當我創建我的結構的數組我main
函數中(就是我現在做的)我arraylength
計算不起作用, 但我不知道爲什麼它不起作用。如果有人可以解釋,那麼我可以自己修復我的問題removeEnty
。
如果有人想要工作代碼(我不給我的數組作爲參數,因爲我在每個函數外部創建我的數組),然後告訴我,我會發布它。
'的sizeof(條目)'是一個表示地址的大小數組參數'struct entry entries []'。它沒有給出數組的實際長度(這是參數未知的)。您需要將數組的長度作爲單獨的參數傳遞(或者有辦法「查找」最後一個條目)。 – lurker