Forum: Mikrocontroller und Digitale Elektronik scanf ließt nur bis zum ersten Leerzeichen


von schurli (Gast)


Lesenswert?

Hi

Habe ein Problem mit meinem UART und dem Einlesen eines Strings.
Es wird nämlich nur bis zum erstn auftauchenden Leerzeichen gelesen.
1
unsigned char uart0_getchar (void)
2
{  while(!(UCSR0A & (1<<RXC0)));
3
  return(UDR0);
4
};
5
6
fdevopen (uart0_putchar, uart0_getchar);
7
8
char buffer[30];
9
scanf("%s",buffer);

Der String den ich einlesen will, sieht so aus:
"+CPAS: 0"

Gelesen wird aber nur das: "+CPAS:"

Weiß jemand um Rat?

mfg

von HildeK (Gast)


Lesenswert?

Das Blank ist für scanf ein Delimiter. Deshalb ist das so.
Lese zweimal:
1
scanf("%s %s",buffer1, buffer2);
und hänge die beiden Teilstrings aneinander.

Oder lese mit fgetc solange, bis das Zeilenende erreicht ist.

von Sepp-Horst Ewald (Gast)


Lesenswert?

Alternative: fgets

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.