0Pricing
C Academy · Lekcja

Biblioteka ctype

isdigit, isalpha, toupper

Biblioteka ctype to bezpłatna lekcja C Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C Academy zawiera 4 lekcji w sumie.

Czym jest ctype.h

Nagłówek <ctype.h> udostępnia funkcje do klasyfikowania i konwertowania znaków.

Nie trzeba dzięki temu zapamiętywać zakresów ASCII ani pisać ręcznych porównań.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("Is 'A' alpha? %d\n", isalpha('A'));
    return 0;
}

isdigit

isdigit(c) zwraca wartość różną od zera, jeśli c jest znakiem cyfry z zakresu '0'-'9', a w przeciwnym razie zwraca 0.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isdigit('7') = %d\n", isdigit('7'));
    printf("isdigit('x') = %d\n", isdigit('x'));
    return 0;
}

isalpha

isalpha(c) zwraca wartość różną od zera, jeśli c jest literą — wielką lub małą.

Dla cyfr i symboli zwracane jest 0.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isalpha('G') = %d\n", isalpha('G'));
    printf("isalpha('3') = %d\n", isalpha('3'));
    return 0;
}

isalnum i isspace

isalnum(c) zwraca prawdę dla liter lub cyfr. isspace(c) zwraca prawdę dla białych znaków, takich jak spacja, tabulator i znak nowej linii.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isalnum('9') = %d\n", isalnum('9'));
    printf("isspace(' ') = %d\n", isspace(' '));
    printf("isspace('a') = %d\n", isspace('a'));
    return 0;
}

isupper i islower

isupper(c) sprawdza, czy znak jest wielką literą, a islower(c) — czy jest małą literą.

Funkcje te są przydatne przed podjęciem decyzji o zmianie wielkości liter.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isupper('A') = %d\n", isupper('A'));
    printf("islower('A') = %d\n", islower('A'));
    return 0;
}

ispunct

ispunct(c) zwraca wartość różną od zera dla drukowalnych znaków interpunkcyjnych, takich jak !, ? i ,, które nie są literami, cyframi ani spacjami.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("ispunct('!') = %d\n", ispunct('!'));
    printf("ispunct('a') = %d\n", ispunct('a'));
    return 0;
}

toupper

toupper(c) zwraca wielką wersję litery. Jeśli c nie jest małą literą, zwraca c bez zmian.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("%c\n", toupper('h'));
    printf("%c\n", toupper('5'));
    return 0;
}

tolower

tolower(c) zwraca małą wersję wielkiej litery albo pozostawia znak bez zmian, jeśli nie jest on wielką literą.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("%c\n", tolower('H'));
    printf("%c\n", tolower('z'));
    return 0;
}

Klasyfikowanie napisu

Przejdź w pętli po napisie i użyj funkcji ctype, aby policzyć cyfry i litery.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "abc123";
    int letters = 0, digits = 0;
    for (int i = 0; s[i]; i++) {
        if (isalpha(s[i])) letters++;
        if (isdigit(s[i])) digits++;
    }
    printf("letters=%d digits=%d\n", letters, digits);
    return 0;
}

Zmiana całego napisu na wielkie litery

Połącz toupper z pętlą, aby zamienić cały napis na wielkie litery, znak po znaku.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello";
    for (int i = 0; s[i]; i++) {
        s[i] = toupper(s[i]);
    }
    printf("%s\n", s);
    return 0;
}

Przekazuj int, nie ujemny char

Funkcje ctype przyjmują wartość typu int, która musi być reprezentowalna jako unsigned char albo być równa EOF.

Bezpośrednie przekazanie ujemnego char powoduje niezdefiniowane zachowanie. W razie wątpliwości należy rzutować na unsigned char.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char c = 'Q';
    int result = isalpha((unsigned char)c);
    printf("safe isalpha = %d\n", result);
    return 0;
}

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat biblioteki ctype.

Podsumowanie

Biblioteka <ctype.h> pozwala:

  • Klasyfikować znaki za pomocą funkcji isdigit, isalpha, isalnum, isspace, ispunct, isupper i islower.
  • Konwertować je za pomocą toupper i tolower.
  • Zawsze przekazywać wartości rzutowane na unsigned char, aby uniknąć niezdefiniowanego zachowania.

Często zadawane pytania

Czy lekcja „Biblioteka ctype” jest bezpłatna?

Tak — pełny tekst „Biblioteka ctype” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C Academy, przejdź na CoddyKit PRO. Kurs C Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Biblioteka ctype”?

isdigit, isalpha, toupper Ćwiczysz C Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C Academy?

Nie wymagamy żadnego doświadczenia. C Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Biblioteka ctype”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C Academy?

Tak. Każda lekcja C Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Znaki jako liczby całkowite
  2. Biblioteka ctype
  3. Odczytywanie znaków
  4. Budowanie narzędzi do obsługi znaków
← Powrót do C Academy