On Thu, Nov 25, 2004 at 09:59:50AM +0200, Nikolay Mitev wrote: > Здравейте > > Хайде и аз да се обадя, въпреки че малко оффтопик. [snip]
> Да не говорим, че може да се поопрости малко: > > #include <stdio.h> > /* > (c) Skelet (G. Georgiev) in terms of GNU GPL > Converts cp1251 -> DOS cyrillic. > */ > > int main() > { > unsigned char w; > unsigned char First = 0xc0; > unsigned char Last = 0xff; > while (!feof(stdin)) { > w = getchar(); > if ((w >= First) && (w <= Last)) w -= 64; > putchar(w); > } > return 0; > } Мдаааа.. и без да искам да се заяждам или нещо такова, има още едно дребно нещо, което се вижда доста често в такива програмки :) По принцип в C getchar() изобщо не връща символ (char), а си връща съвсем истинско цяло число със знак (демек int). Това може да се използва за опростявяане/ускоряване на главния цикъл в тази програмка, както и във всяка друга, която чете символ по символ: int w; while ((w = getchar()) != -1) { if (...) w -= 64; putchar(w); } Но и иначе ще си работи :) А само като идея: такова преобразуване под на практика всяка Unix-like OS може да се направи с tr(1): tr '[\300-\377]' '[\200-\277]' < source.txt > dest.txt Тук вече пренасочването на вход/изхода е важно, защото tr(1) никога и никъде не приема имена на файлове директно на командния си ред, а винаги чете от стандартния вход и пише по стандартния изход. А иначе Велин току-що ми обърна внимание на следното: http://zadnik.org/velin/txt/dos2win.asm http://zadnik.org/velin/txt/dos2win.com Вярно, под Linux няма да свърши много работа, но все пак е интересно :) Поздрави, Петър -- Peter Pentchev [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 I am not the subject of this sentence.
pgphZvsGO4qDP.pgp
Description: PGP signature