Вывести символы из файла. Выводятся не все - C (СИ)
Формулировка задачи:
Есть файл с таким содержанием: $ђЇђ| їµ|{#є . Требуется просто считать от туда эту строку посимвольно и сохранить её в символьный массив. Но почему-то программа может взять только символ '$' и все.В чем проблема и как сделать чтобы это работало ?
#include <stdio.h> #include<wchar.h> #include <locale.h> int main() { setlocale (LC_ALL, "ru_RU.utf-8"); wchar_t k; FILE *f; f = fopen ("/Users/venrok/Desktop/Xcode projects/C-projects/2015/Project-3/text.txt", "r"); while ((k = fgetwc(f)) != WEOF) { wprintf(L"%lc",k); } return 0; }
Решение задачи: «Вывести символы из файла. Выводятся не все»
textual
Листинг программы
#include <stdio.h> #include <wchar.h> #include <locale.h> int main() { setlocale (LC_ALL, "ru_RU.utf-8"); wchar_t k[25]; FILE *f; int i = 0; f = fopen ("text.txt", "r"); while ((k[i] = fgetwc(f)) != WEOF) { wprintf(L"%lc",k[i]); ++i; } wprintf(L"\n%ls",k); return 0; }
Объяснение кода листинга программы
Вот что делает этот код:
- Включает необходимые заголовочные файлы:
stdio.h
для работы с файлами и вывода в консольwchar.h
для работы с широкими символамиlocale.h
для установки локали
- Устанавливает локаль на русскую, используя функцию
setlocale()
. Это позволяет работать с русскими символами. - Определяет переменные:
k
- массив широких символов (wchar_t) на 25 элементовf
- указатель на файл, который будет открыт для чтенияi
- счетчик, который будет использоваться для индексации массиваk
- Открывает файл
text.txt
для чтения с помощью функции fopen()`. - Запускает цикл while, который будет выполняться до тех пор, пока не будет достигнут конец файла (WEOF).
- Внутри цикла, каждый широкий символ из файла считывается с помощью функции
fgetwc(f)
и сохраняется в массивеk
. - Затем этот символ выводится на консоль с помощью функции
wprintf()
. - Счетчик
i
увеличивается на 1 после каждой итерации цикла.
- Внутри цикла, каждый широкий символ из файла считывается с помощью функции
- После завершения цикла, выводится весь массив k с помощью функции wprintf().
- Функция fclose(f) не вызвана, что означает, что файл остается открытым после выполнения программы. Это может быть проблемой, если программа завершается некорректно, так как файл не будет закрыт.
- Возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д