Gestion de la mémoire en C est manuel. Pour concaténer les chaînes, vous devez fournir une variable tableau avec suffisamment de caractères pour contenir le résultat final. Vous pouvez allouer cette variable tampon sur la pile, en tant que variable locale à votre fonction, ou sur le tas, en utilisant malloc().
Ou vous pouvez éviter d'allouer le tampon en évitant d'effectuer une concaténation, si ce que vous avez l'intention de faire est d'afficher les chaînes. Dans ce cas, les éléments suivants:
lcd_putc("\fDeposited $");
lcd_putc(disp_money);
lcd_putc("\nAdd $");
lcd_putc(temp);
lcd_putc(" more");
est un moyen simple d'écrire ce que vous pourriez utiliser. Cette méthode a l'inconvénient d'entraîner le surcoût (le cas échéant) dû à lcd_putc()
. Cette méthode a l'avantage de ne pas nécessiter de concaténation de chaînes.
Si et quand vous faites besoin de concaténer des chaînes, vous voulez utiliser snprintf()
pour faire en sorte que vous ne déborde pas votre tampon (voir le nom de ce site Web), donc ne pas utiliser sprintf()
.
Juste pour vous montrer la voie à ce jour futur lorsque vous devez concaténer des chaînes:
#define STR_DEPOSITED "\fDeposited $"
#define STR_ADD "\nAdd $"
#define STR_MORE " more"
int total_length = strlen(STR_DEPOSITED) + strlen(STR_ADD) + strlen(STR_MORE) + strlen(disp_money) + strlen(temp) + 1;
char * buffer = malloc(total_length + sizeof(char));
snprintf(buffer, "%s%s%s%s%s", STR_DEPOSITED, disp_money, STR_ADD, temp, STR_MORE);
Vous pouvez également faire la même chose en utilisant strncpy(), strncat()
. En guise de remarque, pensez également à utiliser strnlen()
sur les variables, afin de ne pas lire au-delà de la fin du tampon non-terminé.
Pouvez-vous me donner un exemple de la façon dont cela pourrait aider? – Adam
La documentation est un exemple. Si vous recherchez un support opérateur intégré pour cela, vous ne le trouverez pas. –