Skocz do zawartości
linora

Polskie znaki w C

Rekomendowane odpowiedzi

Dopiero zaczynam programować w języku C i mam problem z polskimi znakami. Jako kompilatora używam Dev-C++ 4.9.8.0, który chodzi pod Win2k. Problem polega na tym, że po napisaniu jakiegoś programu i uruchomieniu go pod DOSem, w tekście który drukuje funkcja printf, nie mam polskich znaków diakrytycznych (ą, ę, ó, ś itd.). Co więcej mogę te znaki wpisywać jeśli na przykład uruchomiony program pobiera ode mnie jakieś dane, czyli używać normalnie tych znaków pod DOSem, co by wykluczało kwestię niewłaściwego układu klawiatury. Czy ktoś wie, gdzie leży problem?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To zależy od ustawienia kompilatora , musisz zabaczyć czy jest takie ustawienie w opcjach które to umożliwi. Ewentualnie zaciągnąc jakiegoś patcha z netu albo zmienić coś w rejestrzse systemu windows. Wszystkie kompilatory jaki znam mają z tym problemy , trzeba to ustawić poprostu. Pogooglaj sobie na pewno coś jest.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Grzebałem w opcjach, zmieniałem różne rzeczy, ale nie dało to pożądanego skutku. Piszesz enigmatycznie żeby zmienić coś w rejestrze, tylko co? Googlałem również i znalazłem nawet podobny post na innym forum, niestety bez żadnej odpowiedzi. Może jednak ktoś wie, co konkretnie trzeba ustawić, żeby nie mieć "krzaczków"?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Piszesz enigmatycznie żeby zmienić coś w rejestrze, tylko co?

Enigmatycznie :) Hehe trudno powiedzieć to zależy od kompilatora, ( konkretnie od programu ) .

Np. w C++ Builder trzeba było zmienić jeden wpis w rejestrze aby działały polskie znaczki. A w Dev-C++ może jest coś innego, albo nie ma wcale takiej opcji ( i polskie znaczki nie są zalecane ).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

( i polskie znaczki nie są zalecane ).

mieszasz chlopakowi w glowie. jak polskie znaczki moga nie byc 'polecane'? przeciez wszystkie dostepne programy jakos sobie z nimi radza, prawda? nie badzmy gorsi ;)

 

cały problem polega na tym, ze przy kompilacji wlaswiwe 'ś' i inne sa konwertowane na niezgodne z nimi znaki char z tablicy ascii. Aby temu zaradzic, wystarczy znalezc odpowiedniki ascii 'ś' i innych i wlasnorecznie zaimplementowac te 'ś'. troche zmudne ale jak komus zalezy na polskich ogonkach :) jak znalezc wlasciwe numerki ascii dla 'ś' i innych?

for( int i = 0; i<256; ++i) cout << i << " = " <<(char)i<< ", ";
maly przyklad programu, i zalazek funkcji konwertujacej
#include<iostream.h>void PolskieZnaki(char* tab){  char  a = 'ą', c = 'ć', e = 'ę', l = 'ł', s = 'ś', o = 'ó', z = 'ż', zz = 'ź';  for(;*tab != NULL; ++tab )  {    if(*tab == e) *tab = (char)169;    if(*tab == c) *tab = (char)134;    if(*tab == l) *tab = (char)136;    if(*tab == s) *tab = (char)152;    //do dopisania duze litery i pozostale znaki  }}int main(int argc, char* argv[]){  char napis[] = "święty mikołaj";  PolskieZnaki(napis);  cout << napis;  return 0;}
Pamietac by wysylac do funkcji lancuchy znakowe zakonczone NULL`em!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...