Jump to content
linora

Polskie znaki w C

Recommended Posts

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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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"?

Share this post


Link to post
Share on other sites

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 ).

Share this post


Link to post
Share on other sites

( 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!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...


Aktualności

Artykuły



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.