Moin!
Meines Wissens bricht Scanf nach der angegebenen Anzahl von zeichen ab, schreibt also nicht einfach den Buffer weiter voll.
So weit ich das verstanden habe, liest sscanf aus dem "Buffer" aber aus, um die Daten dann weiterverarbeiten zu können:
int sscanf ( char * buffer, const char * format [ , argument , ...] );
/* buffer Buffer containing the string to be parsed for data. */
>
> Das ist das, was ich meinte. Wo soll ich "buffer" herbekommen, wenn ich nicht schon vorher etwas irgendwie eingelesen habe.
Es gibt doch auch noch fscanf: `int fscanf(FILE * restrict stream, const char * restrict format, ...);`{:.language-c}
Ansonsten möchtest du vielleicht C++ probieren: Wenn du die string-Klasse im Zusammenhang mit Streams benutzt, hast du eine recht sichere Eingabe, z.B. Einlesen einer Zeile:
~~~c
#include <string>
#include <iostream>
std::string eingabe;
std::getline(std::cin, eingabe); // eingabe enthält nun genau eine Zeile
std::cin >> eingabe; // eingabe enthält ein Wort
Viele Grüße,
Robert