Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2013, 18:14   #1
Vasya94
Пользователь
 
Регистрация: 20.04.2013
Сообщений: 55
По умолчанию Бинарные файлы в Си

Здарствуйте уважаемые форумчани!! Помогите , как сделать с текстового файла -бинарный. Условие задачи:Дано символьный файл. Подсчитать количество вхождений в файл каждой из букв а, 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;
}
Vasya94 вне форума Ответить с цитированием
Старый 24.04.2013, 19:16   #2
Vasya94
Пользователь
 
Регистрация: 20.04.2013
Сообщений: 55
По умолчанию

Что никто не может подсказать?
Vasya94 вне форума Ответить с цитированием
Старый 24.04.2013, 22:09   #3
Vasya94
Пользователь
 
Регистрация: 20.04.2013
Сообщений: 55
По умолчанию

Вот я пробывал перевести в бинарный ,но нечего не получилось...
Вот сам код.
Код:
#include"stdafx.h"
 
#include <stdio.h>
#define SIZE 6
#define avfgg "text.txt" 
 main() 
{FILE *fp;
  if ((fp=fopen(avfgg,"rb"))==NULL) 
	  return 1; // если файл не открылся main возвращает 1
  char *c;
  int i, all[SIZE] = {0}; 
  while(!feof(fp)){ // пока не конец файла
      fread(c,sizeof(char),1,fp); // записываем в с, размером char одно значение из файла fp
      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;
}
Заранее спасибо!!

Последний раз редактировалось Vasya94; 24.04.2013 в 22:11.
Vasya94 вне форума Ответить с цитированием
Старый 24.04.2013, 22:20   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предположу следующее:
Код:
FILE *fp=fopen(avfgg,"rb");
if(fp){
 fseek(fp, 0, SEEK_END);
 int size=ftell(fр);
 char *a=(char*)malloc(size);
 fseek(fp, 0, SEEK_SET);
 fread(a,size,1,fp);
 for(int i=0;i<size;i++) a[i]=a[i]='0';
 fclose(fp);
 fp=fopen(avfgg,"wb")
 fwrite(a,size,1,fp);
 fclose(fp);
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.04.2013, 22:30   #5
Vasya94
Пользователь
 
Регистрация: 20.04.2013
Сообщений: 55
По умолчанию

Я с бинарными файлами вобще не дружу, можете помочь запихнуть ваш код в мой код ...

Так что поможите?

Последний раз редактировалось Stilet; 25.04.2013 в 09:44.
Vasya94 вне форума Ответить с цитированием
Старый 25.04.2013, 09:44   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу: Это код для функции main(). Вставляй его целиком и пробуй.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарные файлы с++ Killspamers Помощь студентам 0 01.03.2012 14:04
Бинарные файлы и C# WOWka777 Общие вопросы .NET 4 03.09.2010 18:08
Бинарные файлы Kazik Помощь студентам 5 06.06.2010 21:51
Бинарные файлы VorobeY1326 Общие вопросы C/C++ 12 09.05.2009 21:00
С++ Бинарные файлы EwwwA Общие вопросы C/C++ 0 20.04.2009 17:32