Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Файлы

Автор: Desktop 3 26.10.2006 17:02

Создать файл. Записать в него поля:
Фамилия, знак зодиака, дата рождения.


#include<fstream.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#define FNAME "c:\\zn.txt\0"

void main()
{
char fname[20]=FNAME;
char fam[15];
char zna[15];
char dat[15];
int i;
FILE *out;

clrscr();
if ((out = fopen(fname,"wt"))==NULL)
cout<<"ERROR";

cout<<"Vvesti dani pro cheloveka"<<endl;

for(i=0;i<3;i++)
{
cout<<"Familiya"<<endl;
cin>>fam;
cout<<"Znak zodiaka"<<endl;
cin>>zna;
cout<<"Data rozhdeniya"<<endl;
cin>>dat;

cout<<fam<<endl;
cout<<zna<<endl;
cout<<dat<<endl;
}
fclose(out);

cout<<"Danie zapisani v file "<<fname<<endl;
getch();
}




Файл создается, но ифнормация в него не записывается. Почему ?

Автор: klem4 26.10.2006 19:24

cin >> fam;
fputs(fam, out);


Какая-то мутная у тебя программа, тебе надо на Си или на Си++ ?

Автор: Desktop 3 26.10.2006 19:27

...

Автор: volvo 26.10.2006 23:28

Нужен С++, так пиши на C++, а не на смеси непонятно чего...

#include <stdlib.h>

#include <iostream.h>
#include <fstream.h>

struct T {
friend ostream& operator << (ostream&, const T&);

char family[15];
char zodiak[15];
char birth[15];
};

ostream& operator << (ostream &os, const T &data) {
os << data.family << endl << data.zodiak << endl << data.birth << endl;
return os;
}

int main() {

const char fname[20] = "zn.txt";

ofstream out(fname, ios::out);
if(!out) {
cerr << "cannot open file " << fname << endl;
exit(-1);
}

cout << "Vvesti dani pro cheloveka" << endl;
for(int i = 0; i < 3; i++) {

T data;
cout << "Familiya: "; cin >> data.family;
cout << "Znak zodiaka: "; cin >> data.zodiak;
cout << "Data rozhdeniya: "; cin >> data.birth;

cout << data;

out << data;
}
out.close();

cout << "Danie zapisani v file " << fname << endl;
return 0;
}

Автор: Desktop 3 27.10.2006 2:20

Большое спасибо за программу!
А можно её по проще как небуть сделать, без структуры ?

Автор: volvo 27.10.2006 3:36

Попроще у тебя уже было... Как оно работало, ты сам видел...

Автор: Michael_Rybak 27.10.2006 14:19

Цитата(Desktop 3 @ 26.10.2006 22:20) *

А можно её по проще как небуть сделать, без структуры ?



#include <conio.h>
#define FNAME "c:\\zn.txt\0"
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
{
ofstream fout(FNAME);
char fam[15];
char zna[15];
char dat[15];
int i;

cout<<"Vvesti dani pro cheloveka"<<endl;

for(i=0;i<3;i++)
{
cout<<"Familiya"<<endl;
cin>>fam;
cout<<"Znak zodiaka"<<endl;
cin>>zna;
cout<<"Data rozhdeniya"<<endl;
cin>>dat;

fout<<fam<<endl;
fout<<zna<<endl;
fout<<dat<<endl;
}
}

cout<<"Danie zapisani v file "<<FNAME<<endl;
getch();
}

Автор: Desktop 3 27.10.2006 14:30

Michael_Rybak, спасибо.
а что такое fout ?

Автор: Michael_Rybak 27.10.2006 15:25

fout - это я объявил такую переменную типа ofstream, которой сразу поставил в соответствие файл FNAME (вместо fout можно было назвать как угодно):

[cpp]ofstream fout(FNAME);[/cpp]

И теперь с ней можно работать точно также, как с cout, а писать она будет в файл. Таких переменных можно создать много, и работать с множеством файлов одновременно.

Автор: volvo 27.10.2006 16:00

И вот ЭТО люди называют С++ ??? wacko.gif

Автор: Desktop 3 27.10.2006 16:16

...

Автор: Michael_Rybak 27.10.2006 17:21

Цитата(volvo @ 27.10.2006 12:00) *

И вот ЭТО люди называют С++ ??? wacko.gif


А ЧТО, собственно, люди, по-твоему, должны называть С++? Вообще не понимаю, о чем ты. О перегрузке оператора << ?