IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> вывод текста на русском, вывод текста на русском?как?
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Подскажите как корректно вывести содержимое файла если он содержит текст на русском?просто для вывода содержимого файла на экран я написал такую функцию
int outf(FILE *fz,char *s)
{
char c;
if((fz=fopen(s,"r"))==NULL) Error(2,s);
else
{
while(( c=getc(fz))!=EOF)
putchar©;
fclose(fz);
}
return 1;
}
если текст написан латинскими символами все работает отлично.А если на русском то выводит бред ,и то не полностью.как это исправить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Компилятор? Кодировка файла? Какой язык установлен в системе для Non-Unicode?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Цитата(volvo @ 19.03.2008 17:33) *

Компилятор? Кодировка файла? Какой язык установлен в системе для Non-Unicode?

компилятор vs6 кодировка файла ansi.Какой язык установлен в системе для Non-Unicode? где посмотреть?

Сообщение отредактировано: blackhard -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Андрей

Репутация: -  2  +


Программа запускается под DOS? Если да, то просто установи русификатор (то есть не установи, а запускай каждый раз). Например, rkalt. Ну, они в принципе, друг от друга ни чем не отличаются
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
где посмотреть?
Панель управления -> Региональные настройки -> последняя вкладка...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Цитата(volvo @ 19.03.2008 18:18) *

Панель управления -> Региональные настройки -> последняя вкладка...

установлен русский
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Обычно в Windows используется кодовая страница 1251, в консоли и DOS - 866, а в Unix - КОИ-8.
В виндах кодировка 1251 называется ANSI, а 866 - OEM.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Читай построчно и конвертируй AnsiToOem:

  char st[255];
...
while((fgets(st, 255, fz))) {
AnsiToOem(st, st);
puts(st);
}

Можешь читать и посимвольно, но тогда для конвертации придется извратиться smile.gif

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Цитата(volvo @ 19.03.2008 18:25) *

Читай построчно и конвертируй AnsiToOem:

  char st[255];
...
while((fgets(st, 255, fz))) {
AnsiToOem(st, st);
puts(st);
}

Можешь читать и посимвольно, но тогда для конвертации придется извратиться smile.gif

раз уш речь пошла о построчном чтении как мне файл в массив строк записать?
FILE *fz;
char *c[12];
int i=0;
if((fz=fopen("fileini.ini","r"))==NULL) printf("error\n");
else
{
while( (fgets(c[i],256,fz)))
{

i++;

}
}

я пробовал так но оно не работает

Добавлено через 4 мин.
все по поводу построчного чтения я уже разобрался
fgets(v,80,fz);
c[i]=v;
i++;
так работает
блин не правиль работает в каждой строке c[i] одна и таже строка из файла.как правильно сделать вывод?
о все теперь я нашел ошибку все заработало

Сообщение отредактировано: blackhard -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Вот так не пробовал:

char* c[10]; // для хранения строк
char st[255]; // буфер для чтения строки из файла

int i = 0;
while((fgets(st, 255, fz))) {
c[i++] = strdup(st);
}


? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Цитата(volvo @ 19.03.2008 18:43) *

Вот так не пробовал:

char* c[10]; // для хранения строк
char st[255]; // буфер для чтения строки из файла

int i = 0;
while((fgets(st, 255, fz))) {
c[i++] = strdup(st);
}


? smile.gif

да спасибо большое токо что сам так сделал good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 22:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name