Kurs programowania w C cz. 115

Nasza ocena:

5
Wyświetleń: 581
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C  cz. 115 - strona 1

Fragment notatki:

132 ROZDZIAŁ 18. NAPISY Warto zaznaczyć, że znak nowej linii (’\n’) jest w różny sposób przechowywany w róż- nych systemach operacyjnych. Wiąże się to z pewnymi historycznymi uwarunkowaniami. W niektórych systemach używa się do tego jednego znaku o kodzie 0x0A (Line Feed — nowa linia). Do tej rodziny zaliczamy systemy z rodziny Unix: Linux, *BSD, Mac OS X inne. Drugą konwencją jest zapisywanie ’\n’ za pomocą dwóch znaków: LF (Line Feed) + CR (Carriage return — powrót karetki). Znak CR reprezentowany jest przez wartość 0x0D. Kombinacji tych dwóch znaków używają m.in.: CP/M, DOS, OS/2, Microsoft Windows. Trzecia grupa systemów używa do tego celu samego znaku CR. Są to systemy działające na komputerach Commodore, Apple II oraz Mac OS do wersji 9. W związku z tym plik utworzony w systemie Linux może wyglądać dziwnie pod systemem Windows. Operacje na łańcuchach Porównywanie łańcuchów Napisy to tak naprawdę wskaźniki. Tak więc używając zwykłego operatora porównania ==, otrzymamy wynik porównania adresów a nie tekstów. Do porównywania dwóch ciągów znaków należy użyć funkcji  strcmp  zadeklarowanej w pli- ku nagłówkowym string.h. Jako argument przyjmuje ona dwa napisy i zwraca wartość ujemną jeżeli napis pierwszy jest  mniejszy  od drugiego, 0 jeżeli napisy są równe lub wartość dodatnią jeżeli napis pierwszy jest  większy  od drugiego. Ciągi znaków porównywalne są leksykalnie kody znaków, czyli np. (przyjmując kodowanie ASCII) a jest mniejsze od b, ale jest większe od B. Np.: #include  #include  int main(void) { char str1[100], str2[100]; int cmp; puts("Podaj dwa ciagi znakow: "); fgets(str1, sizeof str1, stdin); fgets(str2, sizeof str2, stdin); cmp = strcmp(str1, str2); if (cmp0) { puts("Pierwszy napis jest wiekszy."); } else { puts("Napisy sa takie same."); } return 0; } Czasami możemy chcieć porównać tylko fragment napisu, np. sprawdzić czy zaczyna się od jakiegoś ciągu. W takich sytuacjach pomocna jest funkcja  strncmp.  W porównaniu do strcmp() przyjmuje ona jeszcze jeden argument oznaczający maksymalną liczbę znaków do porównania: #include  #include 

(…)

… może wyglądać dziwnie pod systemem Windows.
Operacje na łańcuchach
Porównywanie łańcuchów
Napisy to tak naprawdę wskaźniki. Tak więc używając zwykłego operatora porównania
==, otrzymamy wynik porównania adresów a nie tekstów.
Do porównywania dwóch ciągów znaków należy użyć funkcji strcmp zadeklarowanej w pliku nagłówkowym string.h. Jako argument przyjmuje ona dwa napisy i zwraca wartość ujemną
jeżeli napis…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz