Прочитать кириллицу из файла - C (СИ)
Формулировка задачи:
Не могу понять, почему не читает русские символы. Суть задания: извлечь из текстового файла, например data.txt, с русским текстом все гласные, а затем их вывести на экран. С латинскими нормально работает, а русские никак...
int main (void)
{int i = 0, num;
FILE *fp;
char c, *filename, buffer[512];
printf("Vvedite imia fajla\n\n ");
filename = GetString();
fp = fopen(filename, "r");
if (!fp)
{puts("\nFajl ne najden");
getch();
exit(1);
}
while ((c = fgetc(fp)) != EOF)
{if (c == 224 ||
c == 229 ||
c == 232 ||
c == 238 ||
c == 243 ||
c == 251 ||
c == 253 ||
c == 254 ||
c == 255 ||
c == 184 ||
c == 44)
{buffer[i] = c;
i++;
}
}
num = i;
printf("\nV fajle najdeny sledujuschie glasnye:\n");
for (i=0; i < num; i++)
printf ("%c", buffer[i]);
fclose(fp);
free(filename);
getch();
return 0;
}Решение задачи: «Прочитать кириллицу из файла»
textual
Листинг программы
setlocale(LC_ALL,".1251")
Объяснение кода листинга программы
- Устанавливается локальная настройка для работы с русским языком (LC_ALL).
- Файл, из которого необходимо прочитать данные, не указан.
- В функции setlocale() первый аргумент — это тип локали (LC_ALL), второй — это код локали (
.1251). - Код локали устанавливает, что вводимые и выводимые символы должны быть интерпретированы как символы кодировки CP-1251 (кириллица).
- Не указаны переменные, в которые необходимо сохранить данные из файла.
- Не указан сам файл, который необходимо открыть для чтения.
- Не указаны действия, которые необходимо выполнить с данными после их чтения из файла.
- Не указаны действия, которые необходимо выполнить с файлом после его закрытия.
- В функции setlocale() первый аргумент — это тип локали (LC_ALL), второй — это код локали (
.1251). - Код локали устанавливает, что вводимые и выводимые символы должны быть интерпретированы как символы кодировки CP-1251 (кириллица).