PROGRAMOWANIE KOMPUTERÓW C, C++ TEMAT 3-02: Tekst w języku C. Autor dokumentu: Wojciech Galiński ŹRÓDŁA WIEDZY:

środa, 7 września 2016 r.

Informatyka – zakres rozszerzony

Jerzy Grębosz „Symfonia C++ Standard”, http://cplusplus.com, http://edu.i-lo.tarnow.pl/.

Zagadnienia obowiązkowe 1. C-STRING – to tablice znaków, czyli podstawowy sposób na obsługę tekstu w języku C. W tablicach C-STRING tekst zakończony jest znakiem '\0' (NULL). Dostęp do pojedynczych liter uzyskujemy w taki sam sposób, jak do elementów w tablicy (każdy bajt tekstu to 1 element). Tablica C-STRING ma ograniczony rozmiar. Gdy wstawimy do niej zbyt dużo tekstu, to po uruchomieniu programu czasami występują trudne do wykrycia błędy dostępu do pamięci. W C++ powstała m. in. klasa „std::string”, która pozwala na znacznie łatwiejszą obsługę tekstu. 2. Inicjalizowanie tablic znakowych – tablice C-STRING można zainicjalizować na dwa sposoby: • za pomocą klamer i znaków apostrofa; PRZYKŁAD: char s1[] = {'N','y','s','a','\0'}, s2[12] = {'K','t','o',' ','t','o','?','\0'};



za pomocą znaków cudzysłowu. PRZYKŁAD: char s3[] = "Nysa", s4[12] = "Kto to?";

//

tu '\0' wstawiane jest automatycznie

Zarówno teksty „s1” i s2”, jaki i „s3” i „s4” są przechowywane w pamięci w taki sam sposób opisany poniżej: N

y

s

a

\0

K

t

o

0

1

2

3

4

0

1

2

3

t

o

?

\0

4

5

6

7

8

9

10

11

3. Tablica C-STRING, a wskaźniki – nazwa tablicy znaków C-STRING jest wskaźnikiem. Niektóre funkcje operujące na tablicach C-STRING mogą wymagać jako parametru adresu do tablicy C-STRING zapisanego we wskaźniku do tablicy C-STRING. Aby uzyskać wskaźnik do tablicy C-STRING, wystarczy wykonać następujące instrukcje: char s[] = "tekst", *wsk_s = s; albo char s[ROZMIAR], *wsk_s = s; Aby wyświetlić na ekranie adres tablicy C-STRING, nazwę należy rzutować, np. do typu ”void *”. Pominięcie statycznego rzutowania spowoduje wyświetlenie tekstu znajdującego się w tablicy C-STRING, zamiast jej adresu. PRZYKŁAD: char tekst[] = "Technikum informatyczne", *wsk_tekst = tekst; cout << reinterpret_cast(tekst) << " --> " << tekst << endl << reinterpret_cast(wsk_tekst) << " --> " << wsk_tekst << endl;

W C++, zamiast tablic C-STRING, używa się klasy ”std::string” (czasami zmuszeni jesteśmy użyć także tablic C-STRING, ale to coraz rzadsze przypadki). 4. Zawartość „cstring” – zawiera funkcje do obsługi C-STRING. W języku C++ wymagają użycia nagłówka: #include . Oto ważniejsze z nich: METODA

OPIS

PRZYKŁADY

strlen(cstr)

Wylicza ilość bajtów (kodów ASCII) w tekście (włącznie z kodem '\0').

char s1[]="Ala"; printf("%s %d\n", s1, strlen(s1)); cout << s1 <<" ma znaków " << strlen(s1) << endl;

strcpy(cstr, cstr2) strncpy(cstr, cstr2, max)

Tworzy kopię tekstu.

char s[]="Ala", s2[4]; strncpy(s2, s, 4); printf("%s %s\n", s, s2);

strcat(cstr, cstr2) strncat(cstr, cstr2, max)

Dołącza tekst na końcu innego tekstu.

char s3[8]="Ala"; strncat(s3, "n!", 8); printf("%s\n", s3);

strcmp(cstr1, cstr2) Porównuje ze sobą strncmp(cstr1, cstr2, max) dwa teksty.

char s4[]="Ala"; int s4i = strcmp(s4, "la"); printf("%d\n", s4i);

strchr(cstr, znak) strrchr(cstr, znak)

Wyszukuje znaku w tekście.

char s5[]="Ananas", s5s = strrchr(s5, 'a'); printf("%s\n", s5s);

strstr(cstr, cstr2)

Wyszukuje w tekście podciąg char s6[]="Ananas"; printf("%s\n", s6s); (fragment tekstu).

s6s = strstr(s6, "an");

5. Funkcje w „cctype” – zawiera funkcje sprawdzające przynależność znaku (kod ASCII) podanego parametrem do grupy znaków. W języku C++ wymagają użycia nagłówka: #include . Oto ważniejsze z nich: Funkcja isdigit isxdigit

isalnum

isalpha ispunct isblank isspace islower isupper iscntrl

Opis Sprawdza, czy znak jest cyfrą dziesiętną. Sprawdza, czy znak jest cyfrą szesnastkową. Sprawdza, czy znak jest literą alfabetu łacińskiego (bez znaków narodowych) lub cyfrą dziesiętną. Sprawdza, czy znak jest literą alfabetu łacińskiego (bez znaków narodowych). Sprawdza, czy znak jest znakiem interpunkcyjnym. Sprawdza, czy znak jest znakiem odstępu (' ', '\t') Sprawdza, czy znak jest białym znakiem (' ', '\t', '\n') Sprawdza, czy znak jest małą literą alfabetu łacińskiego. Sprawdza, czy znak jest dużą literą alfabetu łacińskiego. Sprawdza, czy znak jest kodem sterującym.

Przykłady #include #include using namespace std; int main() { for (int k=0; k<=127; ++k) { if (!(k%16)) cout << "\nZnak\tASCII\tdigit\txdigit\talpha\t" "punct\tspace\tlower\tupper\tcntrl\n"; cout << << << << << << << << << <<

(k<32? ' ': static_cast(k)) '\t' << k << '\t' (isdigit(k)? 'x': ' ') << '\t' (isxdigit(k)? 'x': ' ') << '\t' (isalpha(k)? 'x': ' ') << '\t' (ispunct(k)? 'x': ' ') << '\t' (isspace(k)? 'x': ' ') << '\t' (islower(k)? 'x': ' ') << '\t' (isupper(k)? 'x': ' ') << '\t' (iscntrl(k)? 'x': ' ') << '\t' << endl;

} return 0; }

6. Zawartość „ctime” – zawiera struktury i funkcje obsługi daty i czasu. W języku C++ wymagają użycia nagłówka: #include . Oto ważniejsze z nich: Funkcja time

Opis Zwraca bieżący czas (liczba sekund od początku epoki UNIX).

Zwraca szczegółowe informacje o wybranym momencie czasu (więcej localtime na temat struktury: „tm” m. in. pod adresem: www.cplusplus.com/ reference/ctime/tm/).

difftime

clock

Zwraca liczbę sekund pomiędzy dwoma momentami czasu.

Przykłady cout << "Liczba sekund od 1970-01-01 00:00:00 to " << time(NULL) << '.' << endl; time_t sek; time(&sek); struct tm *info = localtime(&sek); cout << "Bieżąca data: " << 1900+info->tm_year << '-' << info>tm_mon << '-' << info->tm_mday << endl << "Bieżący czas: " << info->tm_hour << ':' << info->tm_min << ':' << info->tm_sec << " (czas " << (info->tm_isdst? "letni": "zimowy") << ')' << endl << "Dziś jest: " << info->tm_wday+1 << " dzień tygodnia, " << info->tm_yday << " dzień roku." << endl; cout << "Naciśnij klawisz ENTER." << flush; time_t start, stop; time(&start); system("read discard"); time(&stop); cout << "Klawisz ENTER naciśnięto po " << difftime(stop, start) << " s. (" << stop << " - " << start << ')' << endl;

zwraca liczbę określającą system ("read discard"); cout << "Licze do 1E9... " << flush; długość działania for (int i=0; i<1E9; ++i); cout << "OK." << endl; bieżącego programu int t = clock(); liczoną tyknięciami double sek = static_cast(t)/CLOCKS_PER_SEC; zegara (liczba tyknięć w cout << "Od uruchomienia programu minęło " << t << " / " ciągu sekundy zapisana << CLOCKS_PER_SEC << " = " << sek jest w stałej: << " s. (bez czekania na naciśnięcie klawisza)" << endl; CLOCKS_PER_SEC)

Pytania kontrolne 1. 2. 3.

Czym jest C-STRING, a czym tablica znakowa? 4. W jaki sposób inicjalizujemy tablice znakowe? 5. Co to znaczy, że C-STRING jest wskaźnikiem? 6.

Jak wyświetlić adres tablicy znakowej? W jaki sposób przechowujemy tekst w tablicach znakowych z języka C? Wymień i krótko opisz funkcje w nagłówkach: „cstring”, „cctype”, „ctime”.

Zadania 1. 2. 3. 4. 5. 6.

. . . . . Wczytaj z klawiatury rok pomiędzy 1970, a bieżącym. Wczytuj liczbę w pętli do momentu, gdy wymieniony warunek będzie spełniony. Spróbuj to samo z datą pomiędzy 1970 01 01 (za pomocą 3 zmiennych), a bieżącą datą.

INF_R - C, C++ - [3-02] Tekst w jezyku C.pdf

There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. INF_R - C, C++ ...

134KB Sizes 1 Downloads 126 Views

Recommend Documents

f-j 0 (1'W c.?
Oct 1, 2015 - MEMORANDUM. TO. FROM. 01C, Asst. Schools Division Superintendent. Chief, SGOD. Chief, CID. All Secondary School Principals.

C entrumvoor W iskundeen I nformatica
Software Engineering (SEN). Modelling ... In this paper an improved front tracking method for the Euler equations is presented. The .... resolve isentropic compressions - which can occur in real fl ow fields - because a compression in the local.

C entrumvoor W iskundeen I nformatica
We will also present a characterization of a minimal linear (bilinear) hybrid realization and a procedure to convert a linear (bilinear) hybrid system to a minimal one. Partial realization of linear (bilinear) hybrid systems will be discussed too. 20

C entrumvoor W iskundeen I nformatica
Consider a set of input-output maps Φ defined on some subset of switching .... By abuse of notation, for each x ∈ X define the input-output map yΣ(x, ., .) : PC(T ...

C entrumvoor W iskundeen I nformatica
ABSTRACT. The paper deals with the realization theory of linear switched systems. First, it presents a procedure for constructing a minimal realization from a given linear switched system. Second, it gives necessary and sufficient conditions for an i

From C++ to Objective-C
More precisely, Cocoa is the implementation by Apple, for MacOS X, of the ... It consists of a developer framework based upon Objective-C. The ... The present document has been updated to take in account the new features of Objective-C 2.0,.

Amphenol was - C&C COM
and fiber-optic connectors, interconnect systems and coaxial and specialty cable. – As the leading supplier of RF solutions, Changzhou Amphenol Fuyang.

W/yiteéoards, Fli C/yarfs
object-oriented diagrams (e.g., semantic nets, modified entity-relationship diagrams, inheritance diagrams, interaction or collab- oration diagrams, state transition diagrams). Interaction with other developers is often limited to occasional meeting

C entrumvoor W iskundeen I nformatica
Telephone +31 20 592 9333. Telefax +31 20 592 4199 ... Linear switched systems are one of the best studied subclasses of hybrid systems. A vast literature is available on ...... Theory, D.Reidel Publishing Company (1986) 3–32. 4. Berstel, J.

VESTA -C-4--10 W 30.pdf
www.verkol.es. Page 1 of 1. VESTA -C-4--10 W 30.pdf. VESTA -C-4--10 W 30.pdf. Open. Extract. Open with. Sign In. Main menu. Displaying VESTA -C-4--10 W ...

C&C Peat has been certified by the USDA ... - C&C Peat Company
May 17, 2012 - Label verifies that the products amount of renewable biobased ingredients meets ... All biobased amount claims are verified by independent labs and ... and expanded by the Food, Conservation, and Energy Act of 2008 (2008.

2935 C 288 C 362 C 180 C 70 % black T_SHIRT //PRZOD XS-S-M-L ...
T_SHITR /REKAW_PRAWY XS-S-M-L-XL,. T_SHITR /REKAW_LEWY XS-S-M-L-XL,. T_SHITR / STOJKA XS-S-M-L-XL,. KAMIZELKA /Ty£ XS-S-M-L-XL,.

Our Catalouge Download - C&C COM
technologies and most sophisticated and reliable equipment. We recruit and retain the ... Netcomm Wireless (Australia) ..... Wireless 3G/4G broadband devices.

c. rajeshku c. rajeshkumar mar -
Pre-Cleaning inspection on galvanic corrosion of sacrific. Visual inspection of shell int. Post Cleaning Inspections a. Exchangers like Tube-mout tubes.

Cryptography in C and C++
Library of Congress Cataloging-in-Publication Data ..... Libraries in 80x86 assembler (see Chapter 19) in directories flint/lib ...... Call : ml /Cx /c /Gd (filename). 8 ...

C C Music Factory disco.pdf
Sign in. Loading… Whoops! There was a problem loading more pages. Whoops! There was a problem previewing this document. Retrying... Download. Connect ...

() c - GitHub
(SAP Class Room and Online Training Institute). #514,Annapurna Block,. Adithya Enclave,Ameerpet. Ph:8464048960,www.sysarch.in. BW-81-BO I BI-ABAP I 80 ...

Lee C.
PDZ domain-binding activities have been shown for both ad- enovirus type 9 E4 .... primary antibody mouse anti-hDlg (2D11; Santa Cruz Biotechnology, Inc.) was performed ..... ferentiation, while cells that express high-risk HPVs maintain.

1,47?c
June 13 to August 13, 2016 in our school, the Elijah International World. Mission Institute. Being CHED accredited, we are able to credit this study for graduate.

1 C 26 C 51 C 76 D 2 D 27 C 52 A 77 B 3 B 28 B 53 B 78 B 4 C 29 A ...
Feb 16, 2014 - 1. C. 26. C. 51. C. 76. D. 2. D. 27. C. 52. A. 77. B. 3. B. 28. B. 53. B. 78. B. 4. C. 29. A. 54. A. 79. D. 5. B. 30. A. 55. D. 80. B. 6. D. 31. C. 56. A. 81.