39009

39009



132


ROZDZIAŁ 18. SA PISY

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ę <lo tego jednego znaku o kodzie OxOA (Linę Feed — nowa linia). Do tej rodziny zaliczamy systemy z rodziny Unix: Linux. *I)SI). Mac OS X inne. Drugą konwencją jest zapisywanie ’\n' za |M>mocą dwóch znaków: LF (Linę Feed) + CR (Carriage return powrót karetki). Znak CR reprezentowany jest przez wartość QxOD. 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 li 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ę w-skaź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 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.:

sinclude <stdio.h> sinclude <string.h>

int main(void) {

char strl[100], str2[100]; int cmp;

putsCPodaj dwa ciągi znakou: "); fgets(strl, siz«of strl, stdin); fgets(str2, sizeof str2, stdin);

cmp - strcnp(strl, str2); if (cnp<0) {

puts("Pierwszy napis jest mniejszy.");

>    else if (cmp>0) {

puts("Pierwszy napis jest większy.");

>    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 strcmpO przyjmuje ona jeszcze jeden argument oznaczający maksymalną liczbę znaków do porównania:

•include <stdio.h> Sinclude <string.h>



Wyszukiwarka

Podobne podstrony:
134 ROZDZIAŁ 18. SA PISY int main(void) { char napisl[80] - "hello char *napis2 ■
136 ROZDZIAŁ 18. SA PISY Bezpiecznymi alternatywami do strepy i streat są też funkcje strlcpy oraz s
Zdjęcie0672 Warto zaznaczyć, ze zdolności buforujące płynu mózgowo-rdzeniowego są niewielkie z powod
Obraz 4 2 Rys. 5-5. Tabela z warstwami w programie AutoCAD Wspominając o podręcznikach, warto zaznac
PwTiR033 64 Rozdział 3 Warto zaznaczyć, że przedsiębiorcy z reguły obejmują swoim zakresem działania
KANCELARIA PREZESA RADY MINISTRÓW4system Warto zaznaczyć, że wg przytoczonego modelu, działania
Warto zaznaczyć, że Wielka Brytania dysponowała wystarczająco skutecznymi środkami, aby wykorzystują
Obraz3 placówki rodzinne placówki socjalizacyjne działania resocjalizacyjne Warto zaznaczyć, że
klszesz446 ROZDZIAŁ 18. LITERATURA 1487 Nawet jednak, gdyby się okazało — co jest niemal pewne — że
„Ludzkie Działanie”). Warto zaznaczyć, że podczas pobytu w Genewie, 6 lipca 1938 roku ożenił się z M
procent respondentów), którą stanowią osoby bezrobotne. Warto zaznaczyć, że jedna osoba deklaruje
moda kobieca XXw str219 ia:    i    Warto zaznaczyć, że w tym okr
img017 144 intensywnie świecić. Należy zaznaczyć, że jzorokość obrazu wady jest kilkakrotnie większa

więcej podobnych podstron