ANSI C 0

ANSI C 0



7 WEJŚCIE I WYJŚCIE

7.8.2 Badanie klasy znaków i ich przekształcenia

Wiele funkcji ze standardowego nagłówka <ctype.h> bada lub przekształca znaki. W następujących opisach c jest argumentem całkowitym, reprezentującym wartości typu int lub unsigned char (także EOF). Wszystkie funkcje zwracają wartość typu int; prawda oznacza wartość różną od zera.

isalpha(c)

isupper(c)

islower(c)

isdigit(c)

isalnum(c)

isspace(c)


toupper(c)

tolower(c)


prawda, jeśli c jest literą lub cyfrą; 0 - jeśli nie prawda, jeśli c jest wielką literą; 0 - jeśli nie prawda, jeśli c jest małą literą; 0 - jeśli nie prawda, jeśli c jest cyfrą; 0 - jeśli nie prawda, jeśli isalpha(c) lub isdigit(c) są prawdziwe; 0 - jeśli nie

prawda, jeśli c jest odstępem lub jednym ze znaków:

tabulacji, nowego wiersza, powrotu karetki, nowej

strony lub tabulacji pionowej

zwraca c przekształcone na wielką literę

zwraca c przekształcone na małą literę

7.8.3 Funkcja ungetc

W bibliotece standardowej występuje dość okrojona wersja funkcji ungetch, napisanej w rozdz. 4. Nazywa się tu ungetc i jest zadeklarowana następująco:

int ungetc(int c, FILE *fp)

Funkcja ungetc oddaje znak c z powrotem do pliku wskazanego przez fp i zwraca wartość znaku c lub EOF, gdy wystąpił błąd. Dla danego pliku można wycofać tylko jeden znak. Funkcję ungetc można stosować wraz z dowolną standardową funkcją wejściową, jak scanf, getc lub getchar.

7.8.4 Wykonanie polecenia

Funkcja system(char *s) wykonuje polecenie zawarte w argumencie s, po czym wznawia wykonywanie bieżącego programu. Zawartość s ściśle zależy od lokalnego systemu operacyjnego. Banalnym przykładem pochodzącym z systemu Unix jest instrukcja

system(”date”);

która uruchamia program datę wypisujący do standardowego wyjścia aktualną dat? i czas. Funkcja system zwraca zależną od systemu wartość całkowitą opisującą stan.

z jakim zakończyło się uruchomione polecenie. W systemie Unix wa wartość zwracana przez funkcję exit.

7.8.5 Zarządzanie pamięcią

Standardowe funkcje malloc i calloc dynamicznie pobierają od systemu żądane bloki pamięci.

void *malloc(sizeJ n)

Funkcja malloc zwraca wskaźnik do n bajtów nie zainicjowanej pamięci albo NULL, jeśli żądanie nie może być spełnione.

void *calloc(size_t n, size_t size)

Funkcja calloc zwraca wskaźnik do obszaru mogącego pomieścić tablicę n elementów podanego rozmiaru size. Funkcja zwraca NULL, jeżeli żądania nie można spełnić. Przydzielona pamięć jest inicjowana zerami.

Zwracany przez obie funkcje wskaźnik pokazuje na obszar pamięci położony zgodnie z wymaganiami danego obiektu, ale wartość tego wskaźnika należy zrzutować na właściwy typ, jak w następującym przykładzie:

int *ip;

ip = (int *) calloc(n, sizeof(int));

Funkcja free(p) zwalnia pamięć wskazywaną przez p, przy czym wartość p musi być wynikiem wcześniejszego wywołania funkcji malloc lub calloc. Nie ma ograniczeń dotyczących kolejności zwalniania pamięci. Okropnym za to błędem jest zwalnianie czegoś, co nie było uprzednio przydzielone za pomocą funkcji malloc lub calloc.

Błędem jest także używanie czegoś, co już zostało zwolnione. Typowym - i niepoprawnym - fragmentem programu jest następująca pętla, która zwalnia bloki pamięci powiązane w łańcuch:

for (p = head; p != NULL; p = p->next) /* ŹLE */ free(p);

Poprawną metodą jest przechowanie wszystkiego, co jeszcze będzie potrzebne, przed zwolnieniem obszaru pamięci:

for (p = head; p 1= NULL; p = q) { q = p->next; free(p);

}

223


Wyszukiwarka

Podobne podstrony:
ANSI C 1 7 WEJŚCIE I WYJŚCIE Najprostszym mechanizmem wejścia jest czytanie po jednym znaku ze sta
ANSI C 2 7 WEJŚCIE I WYJŚCIE_______- kretnej maszynie, programom z nich korzystającym oszczędzono
ANSI C 3 7 WEJŚCIE I WYJŚCIE ____ ________ printf(s);    /* ŹLE, jeśli w s występuj
ANSI C 5 7 WEJŚCIE I WYJŚCIE______ tabulacji, znak nowego wiersza, znak powrotu karetki, znak tabu
ANSI C 6 7 WEJŚCIE I WYJŚCIE_______ Ćwiczenie 7.5. Napisz na nowo program kalkulatora przyrostkowe
ANSI C 7 7 WEJŚCIE I WYJŚCIE ^ OBSŁUGA BŁĘDÓW - PLIK STDERR I FUNKCJA EXIT Funkcje getchar i putch
ANSI C 8 7 WEJŚCIE I WYJŚCIE #include <stdio.h> /* cat: sklej zawartość plików, wersja 2 */
ANSI C 9 7 WEJŚCIE I WYJŚCIE Aby wykazać, że nie ma nic magicznego w takich funkcjach, jak fgets i
ANSI C 1 7 WEJŚCIE I WYJŚCIE W punkcie 8.7 pokażemy taką realizację dystrybutora pamięci podobnego
ANSI C 1 2 TYPY, OPERATORY I WYRAŻENIA Stała znakowa ’’ reprezentuje znak o wartości zero, tzw. z
ANSI C 0 DODATEK B BIBLIOTEKA STANDARDOWA DODATEK B BIBLIOTEKA STANDARDOWAWejście i wyjście: nagłó
Image1 b) wejście: u(t), u(s) wyjście: i(t), i(s) y(t)=i(t), y(s)=i(s) Rys. a) Obwód przekaźnika P i
Image163 Parametry statyczne i dynamiczne Podstawowe charakterystyki wejściowe i wyjściowe pamięci p
Image25 i(t) •-s— A wejście: u(t), u(s) wyjście: uc(t), y(t)> uc(t) = y(t) R=1000Q T = RC = 1000*
Image342 Wejścia informacyjnel:stV {Nieparzyst. > Ł Parzyst Wejścia Wyjścia Liczba stanów H na
Image363 WejściaSCO WyjściaRys. 4.419. Dekoder scalony 141 a) schemat funkcjonalny, b) sposób połącz
Image4 wejście: u(t), u(s) wyjście: uc(t), y(t)f uc(t) = y(t) Rys. Układ RC

więcej podobnych podstron