C Academy · Lekcja

Budowanie narzędzi do obsługi znaków

Praktyczne przykłady

Lekcja 4 z 413 kroki

Budowanie narzędzi do obsługi znaków to bezpłatna lekcja C Academy na CoddyKit. To lekcja 4 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.

Łączenie poznanych elementów

Można teraz tworzyć małe, praktyczne narzędzia do obsługi znaków, łącząc arytmetykę na typie char, bibliotekę ctype i pętle przetwarzające napisy.

Napiszmy kilka często używanych funkcji pomocniczych.

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

int main(void) {
    char c = 'g';
    printf("Upper: %c\n", toupper(c));
    return 0;
}

Liczenie samogłosek

Licznik samogłosek sprawdza każdy znak pod kątem przynależności do zbioru a, e, i, o, u, zarówno w wersji małej, jak i wielkiej.

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

int count_vowels(const char *s) {
    int n = 0;
    for (int i = 0; s[i]; i++) {
        char c = tolower(s[i]);
        if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u') n++;
    }
    return n;
}

int main(void) {
    printf("%d\n", count_vowels("Education"));
    return 0;
}

Odwracanie napisu

Aby odwrócić napis w miejscu, zamieniaj znaki na obu końcach, przesuwając się stopniowo do środka.

#include <stdio.h>
#include <string.h>

int main(void) {
    char s[] = "hello";
    int n = strlen(s);
    for (int i = 0; i < n / 2; i++) {
        char tmp = s[i];
        s[i] = s[n-1-i];
        s[n-1-i] = tmp;
    }
    printf("%s\n", s);
    return 0;
}

Sprawdzanie palindromu

Palindrom czyta się tak samo od przodu i od tyłu. Porównuj lustrzane pozycje, aż się spotkają.

#include <stdio.h>
#include <string.h>

int is_palindrome(const char *s) {
    int i = 0, j = strlen(s) - 1;
    while (i < j) {
        if (s[i] != s[j]) return 0;
        i++; j--;
    }
    return 1;
}

int main(void) {
    printf("%d\n", is_palindrome("level"));
    printf("%d\n", is_palindrome("world"));
    return 0;
}

Przełączanie wielkości liter

Funkcja przełączająca wielkość liter zamienia wielkie litery na małe i odwrotnie, pozostawiając pozostałe znaki bez zmian.

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

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

Usuwanie znaków niebędących cyframi

Zachowaj z napisu tylko znaki cyfr — przydaje się to na przykład do czyszczenia numerów telefonów.

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

int main(void) {
    char *s = "(555) 123-4567";
    for (int i = 0; s[i]; i++) {
        if (isdigit((unsigned char)s[i])) putchar(s[i]);
    }
    putchar('\n');
    return 0;
}

Ręczna funkcja atoi

Przekształć napis liczbowy na liczbę całkowitą, dodając kolejne cyfry: pomnóż dotychczasową sumę przez 10 i dodaj wartość cyfry.

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

int my_atoi(const char *s) {
    int n = 0;
    for (int i = 0; isdigit((unsigned char)s[i]); i++) {
        n = n * 10 + (s[i] - '0');
    }
    return n;
}

int main(void) {
    printf("%d\n", my_atoi("427") + 3);
    return 0;
}

Liczenie słów

Licz słowa, wykrywając przejścia od białego znaku do znaku, który białym znakiem nie jest.

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

int main(void) {
    char *s = "the quick brown fox";
    int words = 0, in_word = 0;
    for (int i = 0; s[i]; i++) {
        if (isspace((unsigned char)s[i])) in_word = 0;
        else if (!in_word) { in_word = 1; words++; }
    }
    printf("words = %d\n", words);
    return 0;
}

Zapisywanie słów wielką literą

Zamień pierwszą literę każdego słowa na wielką, zmieniając na wielką każdą literę występującą po białym znaku lub rozpoczynającą napis.

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

int main(void) {
    char s[] = "hello there friend";
    int start = 1;
    for (int i = 0; s[i]; i++) {
        if (isspace((unsigned char)s[i])) start = 1;
        else { if (start) s[i] = toupper(s[i]); start = 0; }
    }
    printf("%s\n", s);
    return 0;
}

Szyfr ROT13

ROT13 przesuwa każdą literę o 13 pozycji, zawijając się na początku alfabetu. Dwukrotne zastosowanie przywraca oryginalny tekst.

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

int main(void) {
    char s[] = "Hello";
    for (int i = 0; s[i]; i++) {
        char c = s[i];
        if (isupper(c)) s[i] = 'A' + (c - 'A' + 13) % 26;
        else if (islower(c)) s[i] = 'a' + (c - 'a' + 13) % 26;
    }
    printf("%s\n", s);
    return 0;
}

Częstość występowania znaku

Policz, ile razy określony znak występuje w napisie, używając prostej pętli i porównania.

#include <stdio.h>

int main(void) {
    char *s = "mississippi";
    char target = 's';
    int count = 0;
    for (int i = 0; s[i]; i++) {
        if (s[i] == target) count++;
    }
    printf("'%c' appears %d times\n", target, count);
    return 0;
}

Szybkie sprawdzenie

Sprawdź swoje umiejętności tworzenia narzędzi do obsługi znaków.

Podsumowanie

Utworzył Pan praktyczne narzędzia do obsługi znaków:

  • Liczenie samogłosek, słów i częstości występowania znaków.
  • Odwracanie napisów i sprawdzanie palindromów.
  • Przełączanie wielkości liter i zapisywanie ich wielką literą.
  • Implementowanie ręcznej funkcji atoi i szyfru ROT13.
Bezpłatny start

Ucz się C dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
39
Lekcje
144

Często zadawane pytania

Czy lekcja „Budowanie narzędzi do obsługi znaków” jest bezpłatna?

Tak — pełny tekst „Budowanie narzędzi do obsługi znaków” 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 „Budowanie narzędzi do obsługi znaków”?

Praktyczne przykłady Ć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 4 z 4.

Ile czasu zajmuje lekcja „Budowanie narzędzi do obsługi znaków”?

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