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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 00:11   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Белиберда в файле

Код:
#include <iostream>
#include <stdio.h>

int main()
{
	FILE *file;
	file = fopen("D:\\1.txt", "w");

	int list = 1231;

	fwrite(&list, sizeof(int), 4,file);

	fclose(file);
}
на выходе

Цитата:
Ï ÌÌÌÌÌÌÌÌøäRX
Явно что-то не так. А пАчиму?
L6go1as вне форума Ответить с цитированием
Старый 03.01.2012, 00:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы пишите бинарные данные, а пытаетесь прочесть как текст.
пишите тогда текстом:
Код:
fprintf(file,"%d",list);//fprintf автоматически переведет в строку число
читать тогда придеться через fscanf.

тогда сможете открывать файл блокнотом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.01.2012, 00:17   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

с fprintf - все заработало.
Однако вопрос, получается, что через fwrite можно только строки\буковки вырисовывать?

получается что вот так:

Код:
int list = 1231;
	char lost[] = "\naaaaaaaaaaaaaaa";

	fprintf(file, "%d", list);
	fwrite(&lost, sizeof(char), strlen(lost), file);
А вот если потребуется вычисления буквы + цифры, как быть? Разбивать по fprintf\fwrite или как ни будь можно в одно запихнуть?

Цитата:
1231
aaaaaaaaaaaaaaa

Последний раз редактировалось L6go1as; 03.01.2012 в 00:25.
L6go1as вне форума Ответить с цитированием
Старый 03.01.2012, 00:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я обьяснил причину.
блокнот открывает текстовые данные, а не бинарные.
вот содержимое файла вашего:
<см вложение>

так же вы передали не верные аргументы fwrite.
у вас же int(один, а не массив из 4):
тогда так надо:
Код:
fwrite(&list,sizeof(list),1,file);
итоговое количество данных что пишет fwrite равно sizeof(list)*1(домашнее задание посчитать сколько было записано у вас, <2арг>*<3арг>)
http://cplusplus.com/reference/clibrary/cstdio/fwrite/

Цитата:
Однако вопрос, получается, что через fwrite можно только строки\буковки вырисовывать?
через fwrite пишем бинарные данные, которые не планируется открывать, например, в блокноте.
бинарные данные быстрее, но открыть их обычно можно только в том же приложении что их создало(ну или узнав как храните данные)
Изображения
Тип файла: jpg 00000000.jpg (32.6 Кб, 136 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 03.01.2012 в 00:35.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.01.2012, 00:43   #5
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Ох, пасиб, буду дальше разбираться - авось и сделаю из себя чудо-юда программиста
L6go1as вне форума Ответить с цитированием
Старый 03.01.2012, 00:47   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не за что.
рад был помочь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в файле nulyjarden Помощь студентам 0 10.04.2011 13:10
str+str2+str3=белиберда Richard22 Общие вопросы Delphi 4 17.05.2010 09:17
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
БД в файле vitamin.rulez Помощь студентам 2 28.01.2009 17:20
Строки в файле werser Общие вопросы Delphi 1 24.05.2008 21:22