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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 14:04   #1
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию Проблемы с потоками в С

В общем у меня такая проблема-неудачная запись в файл.
Пример:
Код:
#include<iostream>
#include <cstdio>
using namespace std;

struct student
{
	string family;
	int year;
};

void main
{
student a;
a.family="Ivanov";
a.year=29;     
FILE *f;
f=fopen("myfile.txt", "wb"); 
fwrite(&a,sizeof(student),1,f);
fclose(f);
}
После выполнения программы создается файл со всякими кракозябрами.

Последний раз редактировалось m9yt; 14.04.2010 в 14:33.
m9yt вне форума Ответить с цитированием
Старый 14.04.2010, 14:11   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

У тебя С++ используется, а не С++.
Вот рабочий код на С.
Код:
#include "stdio.h"

struct student
{
	char * family;
	int year;
};

void main()
{
	student a;
	a.family=" Ivanov";
	a.year=29;     
	FILE *f;
	f=fopen("myfile.txt", "wb"); 
	fprintf(f,"%d %s", a.year, a.family);
	fclose(f);
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 14.04.2010, 14:11   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это наверное потому что в записи у тебя участвует string.
А это скорее класс чем символьный массив.
Вот если бы было char family[255]; тогда норм записалось бы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2010, 14:24   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

так и должно быть. Ты же записываешь целую структуру в бинарный файл. Потом чтобы считать эту кракозябру пользуешься ф-ей fread и все
Код:
#include<iostream>
#include <cstdio>
using namespace std;

struct human
{
	string family;
	int year;
};

int main()
{
   human a; 
   human b;
   a.family="Ivanov";
   a.year=29;     
   FILE *f;
   f=fopen("myfile.txt", "wb"); 
   fwrite(&a,sizeof(human),1,f);
   fclose(f);
   f=fopen("myfile.txt", "r"); 
   fread(&b,sizeof(human),1,f);
   fclose(f);
   cout << b.family;
   cout << b.year;
   cin.get();
   return 0;
}
ну а если они тебе не нужны, то ф-ии fscanf fprintf тебе в помощь

Последний раз редактировалось NiCola999; 14.04.2010 в 14:32.
NiCola999 вне форума Ответить с цитированием
Старый 14.04.2010, 14:25   #5
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
У тебя С++ используется, а не С++.
Вот рабочий код на С.
Код:
#include "stdio.h"

struct student
{
	char * family;
	int year;
};

void main()
{
	student a;
	a.family=" Ivanov";
	a.year=29;     
	FILE *f;
	f=fopen("myfile.txt", "wb"); 
	fprintf(f,"%d %s", a.year, a.family);
	fclose(f);
}
Спасибо огромное, Ozerich.
m9yt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с потоками xStill Работа с сетью в Delphi 0 19.03.2010 10:17
Работа с потоками den49 Помощь студентам 0 06.10.2009 14:52
Проблемы с потоками... Deathwatcher Общие вопросы Delphi 5 20.04.2009 12:45
работа с потоками Alex_Pro Общие вопросы .NET 1 01.07.2008 07:25
Проблема с потоками vitalik007 Общие вопросы Delphi 1 11.03.2008 22:35