ANSI C 9

ANSI C 9



7 WEJŚCIE I WYJŚCIE

Aby wykazać, że nie ma nic magicznego w takich funkcjach, jak fgets i fputs, przedstawiamy je tutaj skopiowane bezpośrednio z dostępnej nam biblioteki standardowej:

/* fgets: weź co najwyżej n znaków z pliku iop */ char *fgets(char *s, int n, FILE *iop)

{

register int c; register char *cs;

cs = s;

while (—n > 0 && (c = getc(iop)) != EOF) if ((*cs++ = c) == ’\n') break;

*cs = ’\0’;

return (c == EOF && cs == s) ? NULL : s;

}

/♦ fputs: wypisz s do pliku iop */ int fputs(char *s, FILE *iop)

{

int c;

while (c = ♦s++) putc(c, iop);

return ferror(iop) ? EOF : 0;

}

W standardzie określono, że po wystąpieniu błędu funkcja ferror ma zwracać wartość niezerową; fputs zwraca w takim przypadku EOF, a w pozostałych przypadkach wartość nieujemną.

t

Teraz, za pomocą funkcji fgets, łatwo możemy zrealizować naszą funkcję getline:

/* getline: przeczytaj wiersz, podaj jego długość ♦/ int getline(char *line, int max)

{

if (fgets(line, max, stdin) == NULL) return 0; else

return strlen(line);

}

7.8 KILKA UŻYTECZNYCH FUNKCJI


Ćwiczenie 7.6. Napisz program porównujący dwa pliki i wypisują wiersz, w którym pliki się różnią.

Ćwiczenie 7.7. Zmień program wyszukujący według wzorca (z rozdz. 5) tak, aby przyjmował dane wejściowe z zestawu nazwanych plików lub ze standardowego wejścia, jeśli w argumentach wywołania nie podano żadnej nazwy pliku. Czy razem ze znalezionym wierszem trzeba wypisywać nazwę pliku, w którym go znaleziono?

Ćwiczenie 7.8. Utwórz program wypisujący zawartość zestawu plików, z których każdy rozpoczyna się na nowej stronie. Wszystkie strony powinny być opatrzone tytułem i bieżącym numerem strony w ramach każdego pliku z osobna.


Kilka użytecznych funkcji

W bibliotece standardowej występuje wiele różnorodnych funkcji. W tym punkcie przedstawiamy tylko krótkie opisy tych najczęściej stosowanych. Więcej szczegółów i wiele innych funkcji możesz znaleźć w dodatku B.

7.8.1 Operacje na tekstach

Wspominaliśmy już o funkcjach operujących na tekstach - spośród nich omówiliśmy funkcje strlen, strcpy, strcat i strcmp. Ich deklaracje znajdują się w nagłówku <string.h>. Oto zestawienie takich funkcji; w następujących opisach s oraz t są wskaźnikami do znaków (char *), a c oraz n są typu int.

strcat(s.t)

strncat(s,t,n)

strcmp(s.t)

strncmp(słt,n)

strcpy(s,t)

strncpy(s,t,n)

strlen(s)

strchr(s.c)

strrchr(s,c)


dopisuje t na koniec s dopisuje n znaków z t na koniec s zwraca wartość ujemną, zero lub wartość dodatnią odpowiednio dla s < t, s == t lub s > t

robi to samo, co strcmp, ale tylko dla początkowych n znaków t

kopiuje t do s

kopiuje co najwyżej n znaków t do s zwraca długość s

zwraca wskaźnik do pierwszego wystąpienia c w s lub NULL - gdy c nie występuje w s

zwraca wskaźnik do ostatniego wystąpienia c w s lub NULL - gdy c nie występuje w s

221


Wyszukiwarka

Podobne podstrony:
rożni ce Różnorodne badania wykazały, że nie ma istotnych różnic w zasilaniu odlewów odlewanych do f
scandjvutmp2801 33 nowią całą osnowę naszego pojęcia. Jest to rozwinięcie zdania Arystotelesa, ze n
PRZEGLĄD PIŚMIENNICTWA KRAJOWEGO 139 że nie ma nic bardziej powabnego niż lektura Katalogu”.
88818 Obraz4 (6) 184 LOSY PASIERBÓW nie wrócimy. Może to nawet dobrze. Mówią ludzie, że nie ma nic
^ Co testować? •    Aby wykazać że dany program nie posiada błędów, trzeba
ANSI C 1 7 WEJŚCIE I WYJŚCIE Najprostszym mechanizmem wejścia jest czytanie po jednym znaku ze sta
ANSI C 0 7 WEJŚCIE I WYJŚCIE 7.8.2 Badanie klasy znaków i ich przekształcenia Wiele funkcji ze sta
page0329 PRÓŻNIA. ATOMY. 323 musi wprzódy wykazać, że nie istnieje przestrzeń próżna, będąca ponieką
page0373 369 owskich, aby wykazać, że i wymoczki ze swych zarodków się lęgną, i udowodnił, że zarodk
powtorzenie str1 Ćwiczenie 2 Cel ćwiczenia: Poznanie mechanizmów wejścia/wyjścia, zapoznanie się ze
sc0003 bmp Np. oczywiście niektórzy uważają, że nie ma sensu przygotowywać się do tego aby wygłosić
Kubiak VII 2 jpeg Ojciec powiedział, że nie ma pieniędzy, Aby na dalsze moje studia łożyć. Kiedy już
18 3. Wierzchołki i krawędzie Aby wykazać, że dimS = j i p € rintS znajdziemy j—wymiarową kulę, zawa
163 4.1. WSTĘP specyficznych rozkazów wejścia-wyjścia, co oznacza, że można je stosować tylko w
Obraz!8 i opiekuńczym. Tymczasem świadczenia z funduszu przysługiwały każdej osobie, która wykazała,

więcej podobnych podstron