Jens schrieb:
> Hallo,
>
> ich hab folgendes Mini-Programm. (Zahlen in Zeichen umwandeln
> und mit strcat() in einem gemeinsamen Array speichern)
>
>
1 | > char mydata[100];
|
2 | >
|
3 | > void myadd(u16 data) {
|
4 | > char tmp[80];
|
5 | >
|
6 | > ltoa(data, tmp, 10);
|
7 | > strcat(mydata, tmp);
|
8 | > strcat(mydata, "-");
|
9 | >
|
10 | > printf("%s\n", mydata); // Debug...
|
11 | > }
|
12 | >
|
13 | > int main(void) {
|
14 | > u16 counter = 0;
|
15 | > while (1) {
|
16 | > counter++;
|
17 | > myadd(counter);
|
18 | > }
|
19 | > }
|
20 | >
|
21 | >
|
>
> Wie oft ich auch die Zahl in mydata schreibe,
> die Ausgabe wird immer größer - vermutlich
> bis kein Flashspeicher mehr da ist.
Nö, bis kein RAM mehr vorhanden ist.
myadd hängt nur was an mydata an, aber niemand "leert" mydata. Das
könnte zB erledigt werden durch
am Ende von myadd oder zu Beginn. Dann lassen sich allerdings durch
mehrfache Aufrufe keine längeren Strings mehr zusammenbasteln, was ja
unerwünscht ist. Andernfalls müsste es ausserhalb von myadd geschehen,
etwa
1 | ...
|
2 | if (counter % 4 == 0)
|
3 | mydata[0] = '\0';
|
4 | counter++;
|
5 | ...
|