Bart schrieb:
> Danke euch, mir fehlt irgendwie echt die Disziplin für C ;)
>
1 | void uart_gets(char *test)
|
2 | > {
|
3 | > char string[20];
|
4 | > char c;
|
5 | > int i=1;
|
6 | > c = uart_getc();
|
7 | > if(!(c & UART_NO_DATA))
|
8 | > {
|
9 | > *test = c;
|
10 | > do {
|
11 | > test++;
|
12 | > *test = uart_getc();
|
13 | > }while(*test != '\0');
|
14 | > }
|
15 | > }
|
16 | >
|
So läufts falls es jemandem weiterhilft.
Ähm. schau dir bitte die Funktion noch einmal genau an.
Vor allem der 2.te Aufruf der uart_getc() bzw. die Auswertung dessen was
er retourniert ist nicht koscher. Stell dir einfach vor, du hast einen
Schweizer, der etwas langsamer tippt, am anderen Ende der Leitung.
Auch die Steuerung der do-while Schleife ist ... gelinde gesagt: Mist.
Was muss denn ein Benutzer drücken, damit die uart_gets das als
Stringende interpretiert?
Und wie kriegt ein Benutzer eigentlich einen leeren String an deine
Funktion durch?
Wozu benötigt deine Funktion die lokalen Variablen string und i?
Und weißt du, was an der C-Standardfunktion gets() schlecht designed
ist? So schlecht, dass diese Funktion nicht benutzt werden sollte,
sondern statt dessen immer fgets() benutzt werden muss?