0
안녕하세요, 저는 방금 시작한 언어 인 표준 C를 사용하는 Pebble Smartwatch 용 앱을 만들고 있습니다.C - Struct 구조체 배열 혼동
나는 Money Transaction을 배열에 추가하는 함수를 가지고있다. 나는 다음과 같이 트랜잭션을 정의했습니다 :
나는 그것이이 기능을 사용하여 txnsArray에 추가 트랜잭션받을 때마다struct Transaction {
char * title;
char * amount;
char * date;
char * text;
} txnsArray[20];
:이 예정대로 나는이 배열이 항목을 추가 않는 확인할 때 이제
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++;
}
을 to, 그러나 내가 추가 한 마지막 트랜잭션은 모든 항목에 적용됩니다.
먼저 거래량에 2.5 유로를 추가하고 다른 하나에 4.0 유로를 추가하면 두 항목 모두 4.0 유로가됩니다.
내가 뭘 잘못하고 있니? 도움을 많이 주시면 감사하겠습니다. :)
이 코드에는 _undefined _ 가능한 동작이 있습니다. 'txnsArray [transOverview.txnCounter] .amount = malloc (strlen (txnAmount_Tuple -> value-> cstring) +1); stcharpy (txnsArray [transOverview.txnCounter] .amount, txnAmount_Tuple -> value-> cstring);'_char_ 값이 실제로 복사되고 mem- 주소가 할당되지 않도록 보장하기 위해 –
예! 그거였다. 고마워요.] – JohannesRu
글쎄, 나는 계속해서 질문에 대한 답을 달았습니다. 내가 'strcpy'를 쓰지 말고,'memcpy'를, 또는 필요하다면'strncpy'를 사용하길 권하고 싶습니다. –