Przejdź do zawartości

Dyskusja:C/Napisy

Treść strony nie jest dostępna w innych językach.
Dodaj temat
Z Wikibooks, biblioteki wolnych podręczników.
Najnowszy komentarz napisał(a) 15 lat temu Albmont w wątku Sorry to write in English...

Napis jest zapisywany w kodzie programu jako ciąg znaków zawarty pomiędzy dwoma cudzysłowiami. Może wykraczać poza jedną linię, ale wtedy przechodząc do następnej linii musimy na końcu postawić znak "\".

Moim zdaniem, najpierw trzeba podac zwykly przypadek (czyli tekst jednolinijkowy) a potem przechodzic do takich szczegolow. Szczegolnie, ze zostalo to podane przed wprowadzeniem "\n" - czyli poczatkujacy moglby pomyslec, ze tak tworzy sie stringa ze zlamaniem linii w srodku.

-- GDR!

Unicode

[edytuj]

Ręczne operacje na ciągach zakodowanych w UTF-8 i UTF-16 są utrudnione, ponieważ w przeciwieństwie do UTF-32, gdzie można określić, iż powiedzmy 2. znak ciągu zajmuje bajty od 4. do 7. (gdyż z góry wiemy, że 1. znak zajął bajty od 0. do 3.), w tych kodowaniach musimy najpierw określić rozmiar 1. znaku.

Nie do końca. W UTF-8 i UTF-16 odczytanie danego bajtu pozwala jednoznacznie określić, gdzie zaczyna się znak, którego ten bajt jest częścią. Odpowiadają za to charakterystyczne układy bitów w kolejnych bajtach tworzących znak. Mówią o tym np. tu.

--Nazg00l 09:39, 27 lut 2008 (CET)Odpowiedz

Do autorów: błąd w treści

[edytuj]

Nie mam pomyslu jak to ladnie poprawic wiec pisze tutaj. W tresci jest blad:


Jednak okazuje się, że z powodu użycia funkcji strcpy włamywacz nie musi znać hasła, aby program uznał, że zna hasło, np.:

$ ./a.out 11111111111111111111111111111111
Witaj, wprowadziles poprawne haslo.

Co się stało? Podaliśmy ciąg jedynek dłuższy niż miejsce przewidziane na hasło. Funkcja strcpy() kopiując znaki z argv[1] do tablicy (bufora) haslo przekroczyła przewidziane dla niego miejsce i szła dalej - gdzie znajdowała się zmienna haslo_poprawne. strcpy() kopiowała znaki już tam, gdzie znajdowały się inne dane — między innymi wpisała jedynkę do haslo_poprawne.


Zostaly podane jedynki w rozumieniu znaku '1' czyli w przedstawieniu liczbowym jest to 49, tak wiec do zmiennej haslo_poprawne zostala wpisana liczba 49.

Sorry to write in English...

[edytuj]

... but while editing the Portuguese interwiki I removed all examples that used "é", "á", etc, because depending on which way these characters are implemented, using them may cause problems in C. I think the examples here should be restricted to the alphanumeric standard set (a-zA-Z0-9, etc). Albmont 12:20, 28 gru 2009 (CET)Odpowiedz

Program "porównywanie napisów"

[edytuj]

Nie działa