Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: proftpd IP  (Przeczytany 4102 razy)

cac2

  • Gość
proftpd IP
« dnia: 2006-04-21, 23:52:35 »
Witam.
Zastanawiam się jak rozwiązać problem zamiany polskich znaków na jakiś dowolny inny znak lub ciąg znaków.
Chodzi o to by program zamieniał wszystkie ś,ć,ź,ż .. itd na inne znaki naprzykład ś => sss
ć => ccc
Chce to wkorzystać do pisania dokumentów w LaTeX.
Próbowałem do tej pory tak

#include
int main()
{
if(getc(stdin)==\\'ć\\')
printf(\\"ccc n\\");
else printf(\\"coś nie gran\\");
return 0;
}
Ale podczas kompilacji wyskakuje mi

warning: multi-character character constant

i program nie działa poprawnie bo jeśli podaje mu ć to i tak wypisuje komunikat \\"coś nie gra\\"

Dodam że jeśli próbuje zmienić niepolski znak na inny zanak (może być także polski to wtedy wszystko chodzi prawidłowo.
Znaki wprowadzam za pomocą pliku wsadowego bo mam tródności z tym by w konsoli wpisać polskie znaki.

#include
int main()
{
if(getc(stdin)==\\'x\\')
printf(\\"ccc n\\");
else printf(\\"coś nie gran\\");
return 0;
}

Pozdrawiam.

MWt

  • Gość
proftpd IP
« Odpowiedź #1 dnia: 2006-04-22, 01:11:13 »
U mnie akurat taki program zadziała, ale używam kodowania ISO-8859-2, a Ty masz pewnie UTF-8, które powoduje, że \\'ć\\' to faktycznie już nie jest jeden bajt (więc nie da się zapisać do typu char).

Nie potrafię sobie co prawda wyobrazić co złego jest w używaniu polskich znaków w LaTeX-u, ale jeśli chodzi o zamianę \\"znak na pojedynczy znak\\" to wystarczy polecenie tr - oczywiście trzeba je uzupełnić o pozostałe literki :) - np.
tr \\'ąĄćĆ\\' \\'aAcC\\' < plik_we > plik_wy

Gdyby trzeba było zamieniać polskie znaki na dłuższe napisy, to przed zabraniem się do pisania programu w C pomyślałbym raczej o użyciu sed-a.

MWt

  • Gość
proftpd IP
« Odpowiedź #2 dnia: 2006-04-22, 10:40:33 »
ERRATA do poprzedniego postu:
może się okazać, że polecenie tr jednak nie zadziała jak trzeba na maszynie pracującej w unikodzie.
Ale gotowy skrypt korzystający z sed-a może wyglądać tak:

#!/bin/sed -f
s/ą/aaaa/g
s/Ą/AAAA/g
s/ć/cccc/g
s/Ć/CCCC/g
# itd. dalsze literki...

cac2

  • Gość
proftpd IP
« Odpowiedź #3 dnia: 2006-04-22, 12:53:57 »
Dzięki wygląda na to że sed działa.
Spróbowałem właśnie na małym pliku testowym i jest ok.
Z tym LaTeX-em to chodziło mi o to że mój nie widzi polskich znaków tzn kiedy wpisze słowo \\"ćma\\" on jako wynik podaje \\"ma\\" pomija \\"ć\\" można to ominąć przez wstawianie komend np: aby napisać \\"ćma\\" trzeba wpisać \\"`cma\\".
Chciałem to usprawnić wpisując sobie do pliku źródłowego normalnie  wszystko tak jak powinno być w LaTeX-u ale z polskimi znakami a potem przerabiać ten plik na plik źródłowy dla LaTeX-a.
Tak czy inaczej mam już co chciałem i cieszy mnie to wielce
Dzięki.

MWt

  • Gość
proftpd IP
« Odpowiedź #4 dnia: 2006-04-22, 18:43:09 »
Prawdopodobnie znikajace polskie znaki w Latex-u tez sie wiaza z kodowaniem pliku zrodlowego - jesli przygotowales go w UTF-8, a nie Latni2 (czyli ISO-8859-2) to prawdopodobnie wystarczy zamienic:
  usepackage[latin2]{inputenc}
na:
  usepackage[utf8]{inputenc}

Napisalem \\"prawdopodobnie\\", bo nie jestem w stanie teraz tego sprawdzic.

Inny sposob to zapisanie pliku w kodowaniu Latin2 (mozna to wybrac np. przy zapisie z edytorow KDE, takich jak KWrite czy tez z Kile\\'a) i pozostawienie
usepackage[latin2]{inputenc}

stoper4

  • Gość
proftpd IP
« Odpowiedź #5 dnia: 2006-04-21, 21:54:12 »
Zainstalowałem proftpd. Wszystko fajnie jak wpisuje ip lokalne...ale jak zrobić na IP globalne  albo nazwe hostu, żeby ktoś z zewnątrz mógł ogladac pliki na serwerze??!!Moje globalne IP to: 83.18.12.122 a lokalne: 192.168.202.43.

I jeszcze jedno jak zrobić by działał tylko folder /home/ftp ?? Teraz jak wpisze ftp://nazwa_użytkownika@adres_ip_lokalny i podam hasło to można wejść do katalogu użytkownika i on może wszystko usuwać itd.

dzordz

  • Gość
proftpd IP
« Odpowiedź #6 dnia: 2006-04-21, 22:24:39 »
2006-04-21 21:54:12 stoper4 napisał:

> Zainstalowałem proftpd. Wszystko fajnie jak wpisuje ip lokalne...ale jak zrobić na IP globalne
 > albo nazwe hostu, żeby ktoś z zewnątrz mógł ogladac pliki na serwerze??!!Moje globalne IP to:
 > 83.18.12.122 a lokalne: 192.168.202.43.
 >
 > I jeszcze jedno jak zrobić by działał tylko folder /home/ftp ?? Teraz jak wpisze
 > ftp://nazwa_użytkownika@adres_ip_lokalny i podam hasło to można wejść do katalogu użytkownika i
 > on może wszystko usuwać itd.


Sam uzywam proftpd moge sie łączyć na konto uzytkownika i roota i anonymusa a wszystkiego sie dowiedziałem tutaj
http://gorzow-wlkp.pl/linux/proftpd.php
polecam bardzo jasne opisy

pozdr

chmooreck

  • Gość
proftpd IP
« Odpowiedź #7 dnia: 2006-04-21, 22:50:56 »
2006-04-21 22:24:39 dzordz napisał:

 > Sam uzywam proftpd moge sie łączyć na konto uzytkownika i roota i anonymusa a wszystkiego sie
 > dowiedziałem tutaj
 > http://gorzow-wlkp.pl/linux/proftpd.php
 > polecam bardzo jasne opisy

uwazaj z tym logowaniem na root'a przez ftp - to jest protokol nieszyfrowany i mozna bardzo prosto podgladnac haselko... ;-)

dzordz

  • Gość
proftpd IP
« Odpowiedź #8 dnia: 2006-04-22, 00:19:41 »
2006-04-21 22:50:56 chmooreck napisał:


 > uwazaj z tym logowaniem na root'a przez ftp - to jest protokol nieszyfrowany i mozna bardzo
 > prosto podgladnac haselko... ;-)


wiem wiem :)
napisałem tylko jakie  mam mozliwosci