Бинарные файлы: Подсчитать количество вхождений в файл каждой из букв а, 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;                
}

Объяснение кода листинга программы

Выполняемый код с комментариями:

  1. #include — подключаем стандартную библиотеку для работы с консолью
  2. int main() — функция main(), с нее начинается выполнение любой программы на C
  3. *FILE f;* — объявляем переменную типа FILE, которая будет использоваться для работы с файлами
  4. int count[256] = {0}; — объявляем массив count размером 256 байтов, и инициализируем все его элементы нулями
  5. char i; — объявляем переменную типа char, которая будет использоваться для хранения символов
  6. if ((f = fopen(c:\\a.txt, rb)) == NULL) — открываем файл c:\\a.txt в бинарном режиме с помощью функции fopen(), и сохраняем указатель на файл в переменную f. Если файл не удалось открыть, то возвращаем 1
  7. while(fread(&i, sizeof(i), 1, f)) — читаем файл по одному символу за раз с помощью функции fread(), и сохраняем символ в переменную i. Функция fread() возвращает ненулевой значение, пока есть данные для чтения
  8. ++count[i]; — увеличиваем значение элемента массива count, соответствующего символу i, на единицу
  9. fclose(f); — закрываем файл с помощью функции fclose()
  10. for(i = 'a'; i <= 'f'; i++) — выполняем цикл по символам от 'a' до 'f'
  11. printf(%c: %d\n, i, count[i]); — выводим на консоль количество вхождений символа i в файл, используя функцию printf()
  12. return 0; — завершаем выполнение функции main(), возвращая ноль. Программа успешно завершилась, если значение, возвращаемое функцией main(), равно нулю.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5
Похожие ответы