Подскажите как корректно вывести содержимое файла если он содержит текст на русском?просто для вывода содержимого файла на экран я написал такую функцию
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;
}
Компилятор? Кодировка файла? Какой язык установлен в системе для Non-Unicode?
Программа запускается под DOS? Если да, то просто установи русификатор (то есть не установи, а запускай каждый раз). Например, rkalt. Ну, они в принципе, друг от друга ни чем не отличаются
Обычно в Windows используется кодовая страница 1251, в консоли и DOS - 866, а в Unix - КОИ-8.
В виндах кодировка 1251 называется ANSI, а 866 - OEM.
Читай построчно и конвертируй AnsiToOem:
char st[255];Можешь читать и посимвольно, но тогда для конвертации придется извратиться
...
while((fgets(st, 255, fz))) {
AnsiToOem(st, st);
puts(st);
}
char st[255];Можешь читать и посимвольно, но тогда для конвертации придется извратиться
...
while((fgets(st, 255, fz))) {
AnsiToOem(st, st);
puts(st);
}
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++;
}
}
fgets(v,80,fz);так работает
c[i]=v;
i++;
Вот так не пробовал:
char* c[10]; // для хранения строк
char st[255]; // буфер для чтения строки из файла
int i = 0;
while((fgets(st, 255, fz))) {
c[i++] = strdup(st);
}