Вывести символы из файла. Выводятся не все - 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, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д