したがって、次のtoString関数があります。
/*
* Function: toString
* Description: traduces transaction to a readable format
* Returns: string representing transaction
*/
char* toString(Transaction* transaction){
char transactStr[70];
char id[10];
itoa(transaction -> idTransaction,id, 10);
strcat(transactStr, id);
strcat(transactStr, "\t");
char date[15];
strftime(date,14,"%d/%m/%Y %H:%M:%S",transaction -> date);
strcat(transactStr, date);
strcat(transactStr, "\t");
char amount[10];
sprintf(amount,"%g",transaction -> amount);
strcat(transactStr,"$ ");
strcat(transactStr, amount);
return transactStr;
}
CLionは警告でリターンラインを強調表示します:値はローカルスコープをエスケープします(transactStrを参照)
なぜこれが起こっているのかを知る必要があります(私はCに不慣れです、ところで)
その関数内にローカル変数ポインター(感謝の編集)を定義し、それを返そうとしています。
変数の存続期間は、それを囲むスコープの存続期間のみであるため、これはノーノーです。ここでは、関数呼び出しです。運が良ければ、戻り値を参照しようとすると、未定義の動作がトリガーされ、通常はクラッシュします。
配列を返したい場合は、引数として渡す必要があります。