Бинарные файлы: Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f - C (СИ)
Формулировка задачи:
Здарствуйте уважаемые форумчани!! Помогите , как сделать с текстового файла -бинарный. Условие задачи:Дано символьный файл. Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f и вывести результат отдельными строками.
Вот я написал код , но я там сделал с помощью текстовых,а не бинарных.Помогите , как можно переделать в бинарный?
#include"stdafx.h" #include <stdio.h> #define SIZE 6 #define avfgg "text.txt" int main(void) {FILE *fp = fopen(avfgg, "r"); char c; int i, all[SIZE] = {0}; if (!fp) return 1; while ((c = fgetc(fp)) != EOF) // пока считали символ в переменную с и он оказался не символом конца файла if (c >= 'a' && c <= 'f') // если символ лежит в диапазоне [a, f] all[c - '0' - 49]++; // в массиве all с индексом, равным значению этой переменной в коде ASCII - 49 (начиная с 49 символа идут малые латинские буквы) for (i=0; i < SIZE; i++) // от начала до конца массива printf("%c-%d\n", i + 49 + '0', all[i]); // выводим содержимое на экран. i + 49 - номер символа по таблице ASCII. Добавление '0' преобразует int в char return 0; }
Что никто не может помочь?
Решение задачи: «Бинарные файлы: Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f»
textual
Листинг программы
#include<stdio.h> int main() { FILE *f; int count[256] = {0}; char i; if ((f = fopen("c:\\a.txt", "rb")) == NULL) return 1; while(fread(&i, sizeof(i), 1, f)) ++count[i]; fclose(f); for(i = 'a'; i <= 'f'; i++) printf("%c: %d\n", i, count[i]); return 0; }
Объяснение кода листинга программы
Выполняемый код с комментариями:
- #include
— подключаем стандартную библиотеку для работы с консолью - int main() — функция main(), с нее начинается выполнение любой программы на C
- *FILE f;* — объявляем переменную типа FILE, которая будет использоваться для работы с файлами
- int count[256] = {0}; — объявляем массив count размером 256 байтов, и инициализируем все его элементы нулями
- char i; — объявляем переменную типа char, которая будет использоваться для хранения символов
- if ((f = fopen(
c:\\a.txt
,rb
)) == NULL) — открываем файлc:\\a.txt
в бинарном режиме с помощью функции fopen(), и сохраняем указатель на файл в переменную f. Если файл не удалось открыть, то возвращаем 1 - while(fread(&i, sizeof(i), 1, f)) — читаем файл по одному символу за раз с помощью функции fread(), и сохраняем символ в переменную i. Функция fread() возвращает ненулевой значение, пока есть данные для чтения
- ++count[i]; — увеличиваем значение элемента массива count, соответствующего символу i, на единицу
- fclose(f); — закрываем файл с помощью функции fclose()
- for(i = 'a'; i <= 'f'; i++) — выполняем цикл по символам от 'a' до 'f'
- printf(
%c: %d\n
, i, count[i]); — выводим на консоль количество вхождений символа i в файл, используя функцию printf() - return 0; — завершаем выполнение функции main(), возвращая ноль. Программа успешно завершилась, если значение, возвращаемое функцией main(), равно нулю.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д