簡體   English   中英

C-在數組混亂中存儲結構

[英]C - Store Structs in Array confusion

早上好,我目前正在為Pebble Smartwatch開發一個應用程序,該應用程序使用標准C(我剛開始使用的語言)。

我有一個將資金交易添加到數組的功能。 我已經定義了這樣的交易:

struct Transaction {
    char * title;
    char * amount;
    char * date;
    char * text;
} txnsArray[20];

每當我收到交易時,都會使用以下功能將其添加到txnsArray中:

void addTransaction(DictionaryIterator * txnIter){
    Tuple *txnTitle_Tuple = dict_find(txnIter, TRANSACTION_TITLE);
    Tuple *txnAmount_Tuple = dict_find(txnIter, TRANSACTION_AMOUNT);
    Tuple *txnText_Tuple = dict_find(txnIter, TRANSACTION_TEXT);


    txnsArray[transOverview.txnCounter].title = txnTitle_Tuple->value->cstring;
    txnsArray[transOverview.txnCounter].amount = txnAmount_Tuple ->value->cstring;
    txnsArray[transOverview.txnCounter].text = txnText_Tuple->value->cstring;

    transOverview.txnCounter++;

}

現在,當我檢查此數組時,它確實按預期添加了條目,但是我添加的最后一個事務適用於所有條目。

假設我先添加一筆交易權重,金額為2.5歐元,然后再添加一筆交易,金額為4.0歐元,那么兩個條目的金額均為4.0歐元。

我究竟做錯了什么? 非常感謝您的幫助。 :)

看起來dict_find函數沒有為value->cstring分配內存value->cstring而是為每個調用使用相同的緩沖區。 因此,數組中的結構以指向同一內存的指針結尾,如果dict_find修改,則它將修改所有數組條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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