199
SCANF
str * tmp;
size ■ (size.t)ret ♦ 1;
if (ret<0) { free(str); str - 0;
} else if (size-l>ret) {
char *tmp = realloc(str, (size.t)ret ♦ 1); if (tmp) { str = tmp;
return str;
>
Funkcjo snprintf i vsnprintf nie były zdefiniowane w standardzie C89. Zostały one dodane dopiero w standardzie C99.
Biblioteka glibc «ło wersji 2.0.6 włącznie posia<lała implementacje funkcji snprintf oraz vsnprintf, które były niezgodne ze standardem, gdyż zwracały -1 w przypadku, gdy wynikowy tekst nie mieścił się w podanej tablicy znaków.
W pliku nagłówkowym stdio.h:
int scanf(const char *format, ___);
int fscanf(FILE "stream, const char "format, ...); int sscanf(const char *str, const char "format, ...);
W pliku nagłówkowym stdarg.h:
int vscanf(const char "format, va_list ap);
int vsscanf(const char "str, const char "format, va_list ap);
int vfscanf(FILE "stream, const char "format, va_list ap);
Funkcje odczytują dane zgodnie z podanym formatem opisanym niżej. Funkcje scanf i vscanf odczytują dane ze standardowego wejścia (tj. stdin); 6canf i vfscanf ze strumienia IHjdancgo jako argument; a sscanf i vsscanf z po<lanego ciągu znaków*.
Funkcje vscanf. vfscanf i vsscanf różnią się od odpowiadających im funkcjom scanf, fscanf i sscanf tym. że zamiast zmiennej liczby argumentów przyjmują argument typu vaJist.
format format odczytu danych
stream strumień wejściowy, z którego mają być odczytane dane