• Nie Znaleziono Wyników

Pracownia nr 2 (18.10.2020) Pracownia nr 2 (18.10.2020)

N/A
N/A
Protected

Academic year: 2021

Share "Pracownia nr 2 (18.10.2020) Pracownia nr 2 (18.10.2020)"

Copied!
4
0
0

Pełen tekst

(1)

Informatyka 2

Informatyka 2 ((EZ1E3012) EZ1E3012)

Politechnika Białostocka

Politechnika Białostocka -- Wydział Elektryczny Wydział Elektryczny

Elektrotechnika, semestr III, studia niestacjonarne I stopnia Elektrotechnika, semestr III, studia niestacjonarne I stopnia

Rok akademicki 2020/2021 Rok akademicki 2020/2021

Pracownia nr 2 (18.10.2020) Pracownia nr 2 (18.10.2020)

dr inż. Jarosław Forenc

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 2/14

Język C

Język C -- łańcuchy znaków łańcuchy znaków

Łańcuch znaków (ciąg znaków, napis, literał łańcuchowy, stała łańcuchowa, C-string) - ciąg złożony z zera lub większej liczby znaków zawartych między znakami cudzysłowu

"Pies"

Implementacja - tablica, której elementami są pojedyncze znaki (typ char)

Ostatni znak (\0, liczba zero, znak zerowy) oznacza koniec napisu

"Pies"

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 3/14

Język C

Język C -- łańcuchy znaków łańcuchy znaków

W rzeczywistości w tablicy zamiast znaków przechowywane są odpowiadające im kody ASCII (czyli liczby)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 4/14

Język C

Język C -- deklaracja łańcucha znaków deklaracja łańcucha znaków

Deklaracja zmiennej przechowującej łańcuch znaków char nazwa_zmiennej[rozmiar];

Przykład:

Tablica txtmoże przechowywać napisy o maksymalnej długości do 9 znaków

chat txt[10];

(2)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 5/14

Język C

Język C -- inicjalizacja łańcucha znaków inicjalizacja łańcucha znaków

Inicjalizacja łańcucha znaków

char txt1[10] = "Pies";

char txt2[10] = {'P','i','e','s'};

Pozostałe elementy tablicy otrzymują wartość zero char txt3[10] = {80,105,101,115};

char txt4[] = "Pies";

char *txt5 = "Pies";

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 6/14

Język C

Język C -- inicjalizacja łańcucha znaków inicjalizacja łańcucha znaków

Inicjalizacja możliwa jest tylko przy deklaracji

char txt[10];

txt = "Pies"; /* BŁĄD!!! */

Przypisanie zmiennej txtwartości "Pies"wymaga zastosowania funkcji strcpy() z pliku nagłówkowego string.h

char txt[10];

strcpy(txt,"Pies");

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 7/14

Język C

Język C -- stała znakowa stała znakowa

Stałą znakowątworzy jeden znak ujęty w apostrofy

W rzeczywistości stała znakowa jest to liczba całkowita, której char zn = 'x';

W rzeczywistości stała znakowa jest to liczba całkowita, której wartość odpowiada wartości kodu ASCII reprezentowanego znaku

Zamiast powyższego kodu można napisać:

Uwaga:

'x' - stała znakowa (jeden znak)

"x" - łańcuch znaków (dwa znaki: xoraz \0) char zn = 120;

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 8/14

Język C

Język C -- wyświetlenie tekstu wyświetlenie tekstu

Wyświetlenie tekstu funkcją printf()wymaga specyfikatora %s char napis[15] = "Jan Kowalski";

printf("Osoba: [%s]\n", napis);

W specyfikatorze %s: szerokość określa szerokość pola, zaś precyzja - liczbę pierwszych znaków z łańcucha

Osoba: [Jan Kowalski]

char napis[15] = "Jan Kowalski";

printf("[%10.6s]\n", napis);

[ Jan Ko]

(3)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 9/14

Język C

Język C -- wyświetlenie tekstu wyświetlenie tekstu

Do wyświetlenia tekstu można zastosować funkcję puts()

Funkcja () stdout(ekran) zawartość łańcucha puts() int puts(const char *s);

Funkcja puts()wypisuje na stdout(ekran) zawartość łańcucha znakowego (ciąg znaków zakończony znakiem '\0'), zastępując znak '\0'znakiem '\n'

char napis[15] = "Jan Kowalski";

puts(napis);

Jan Kowalski

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 10/14

Język C

Język C -- wyświetlenie tekstu wyświetlenie tekstu

Wyświetlenie znaku funkcją printf()wymaga specyfikatora %c char zn = 'x';

printf("Znak to: [%c]\n", zn);

Znak to: [x]

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 11/14

Język C

Język C -- wyświetlenie tekstu wyświetlenie tekstu

Łańcuch znaków jest zwykłą tablicą - można więc odwoływać się do jej pojedynczych elementów

char txt[15] = "Ola ma laptopa";

printf("Znaki: ");

printf("Znaki: ");

for (int i=0; i<15; i++) printf("%c ",txt[i]);

Znaki: O l a m a l a p t o p a

printf("Kody: ");

for (int i=0; i<15; i++) printf("%d ",txt[i]);

Kody: 79 108 97 32 109 97 32 108 97 112 116 111 112 97 0

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 12/14

brak znaku &

Język C

Język C -- wczytanie tekstu wczytanie tekstu

Do wczytania tekstu funkcją scanf()stosowany jest specyfikator %s char napis[15];

scanf("%s", napis);

brak znaku &

W specyfikatorze formatu %smożna podać szerokość

W powyższym przykładzie scanf() zakończy wczytywanie tekstu po pierwszym białym znaku (spacja, tabulacja, enter)

lub w momencie pobrania 10 znaków char napis[15];

scanf("%10s", napis);

(4)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 13/14

Język C

Język C -- wczytanie tekstu wczytanie tekstu

W przypadku wprowadzenia tekstu "To jest napis", funkcja scanf() zapamięta tylko wyraz "To"

Zapamiętanie całego wiersza tekstu (do naciśnięcia klawisza Enter) wymaga użycia funkcji gets()

Funkcja gets() wprowadza wiersz (ciąg znaków zakończony '\n') ze strumienia stdin(klawiatura) i umieszcza w obszarze pamięci wskazywanym przez wskaźnik szastępując '\n'znakiem '\0'

char napis[15];

gets(napis);

gets() char *gets(char *s);

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 2 14/14

Język C

Język C -- plik nagłówkowy plik nagłówkowy string.h string.h

Kopiuje łańcuch s2do łańcucha s1

strcpy() char *strcpy(char *s1, const char *s2);

Zwraca długość łańcucha znaków, nie uwzględnia znaku '\0'

Porównuje łańcuchy s1i s2z rozróżnianiem wielkości liter strlen() size_t strlen(const char *s);

strcmp() int strcmp(const char *s1, const char *s2);

Cytaty

Powiązane dokumenty

skiemu żywe pojęcie o uświęconej wartości życia i jego ideałów, Jest rzeczą jasną, że dla osiągnięcia tego celu konieczne jest nauczanie konkretnej i

Cóż dziwnego, że wiele sodalicyj chyliło się zupełnie do upadku, że trzeba je było gwałtownie ratować i dźwigać i na duchu podnosić. Moderatorów i

Termin 8 września okazał się niepraktyczny jako zbyt wczesny po wakacjach; niektóre zakłady nie miały jeszcze nauki z powodu remontu lub przebudowania gmachów,

Ostać się bowiem bez Tej nadprzyrodzonej pomocy i siły nie może jej idealizm życiowy, który u nas. kołyszące się nad obszareti naszych lasów i pól... Czyż

Płomień naszego idealizmu wielkim gotów jest jeszcze wybuchnąć pożarem i może życiodajnem naród ogrzać ciepłem, gdyż leży on w naturze naszej polskiej, bo

ne* ?dy widzę obok niej młodzież rzemieślniczą i robotniczą, co niesie światło nauki Chrystusowej do warsztatów i fabryk, wprzęgając do wspólnej pracy nasz

feratów: Sodalicja, jej zadania i cele, Sodalicja wyrabia elitę katolicką, Obowiązki religijne sodalisa, Obowiązki sodalisa względem szkoły, Obowiązki

ciele są zazwyczaj niezdolni do życia praktycznego, słyszymy to tak często, że długie rozmyślanie nie wydaje się nam być dla działania pożytecznem..