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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 17:44   #1
H1ghlander
Пользователь
 
Регистрация: 13.09.2010
Сообщений: 19
По умолчанию запись/чтение из бинарного файла.

Нужно написать программу на С для записи и чтения из бинарного файла. Нашел подходящий код на этом форуме, но в нем какая-то ошибка, числа записываются в бинарный файл, а при выводе из этого файла почему-то выводится лишний символ(дублируется последнее введенное число)
Пожалуйста помогите найти ошибку, а что-то никак не могу понять, что здесь не так.
Цитата:
Сообщение от madmonk Посмотреть сообщение
Программа создания бинарного файла
Код:
#include<stdio.h>
#include<string.h>
int main(int argc, char *argv[]) {
  char str[101], bin[5] = ".bin";
  puts("Vvedite nazvanie faila: ");
  scanf("%s", str);
  strcat(str,bin); 
  short int buf, n, i;
  puts("Vvedite kolichestvo vvodimix chisel: "); 
  scanf("%d", &n);
  FILE *f;
  f=fopen(str, "wb");
  fflush(f); 
  for( i=1; i<=n; i++) {
    scanf("%d", &buf);
    fwrite(&buf, sizeof(short int), 1, f);
  }
  fclose(f);
  return 0;
}
Программа чтения из бинарного файла
Код:
//подключение библиотеки стандартного ввода и вывода
#include<stdio.h>
int main(int argc, char *argv[])
{
	//объявление переменных программы
	short int buf,k;
	//объявление файловой переменной
	FILE *f=NULL;
	//Открытие бинарного файла
	//для чтения и записи с проверкой
	f=fopen(argv[1],"rb+");
	//Если файл открыть не удалось, то
	if (f==NULL)
	{
		//вывод сообщения
		puts("FAIL NE NAIDEN!");
		//и выход
		return 0;
	}
	//чтение первого значения из файла
	//если файл пустой, то
	if (fread(&buf, sizeof(short int), 1, f)!=1)
	{
		//вывод сообщения
		puts("PUSTOI FAIL!");
		//и выход
		return 0;
	}
	//закрываем файл
	fclose(f);
	//Открытие файла для чтения и записи с проверкой
	//указатель становится на первый элемент
	f=fopen(argv[1],"rb+");
	//пока не конец файла
	while(!feof(f))
	{
		//считываем элемент
		fread(&buf, sizeof(short int), 1, f);
    printf("%5d", buf);
	}

	fclose(f);
	//чтобы окно сразу не закрылось
	//ожидаем нажатую клавишу
  scanf("%d", &k);
	return 0;
}
H1ghlander вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение типизированого бинарного файла (ILDA) Ryazanec Общие вопросы Delphi 6 24.10.2010 21:16
Windows-service.Некорректное чтение бинарного файла. Ifmomax Общие вопросы Delphi 0 02.07.2010 16:47
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31
Запись/чтение из бинарного файла - непонятные проблемы.... Jorgen Общие вопросы C/C++ 1 26.11.2009 11:45