Форум программистов, компьютерный форум CyberForum.ru

Запись в файл - C++

Восстановить пароль Регистрация
 
kemper88
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 7
26.10.2010, 15:21     Запись в файл #1
Здравствуйте. У меня такой вопрос. Вот есть программа выводящая лабораторные на экран и мне нужно чтобы все результаты с экрана записывались в файл. Пока что у меня создает файл но ничего туда не пишет.
Подскажите пожалуйста где ошибка?
Функция записи находиться в void zap().
Заранее спасибо!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include "stdio.h"
#include "iostream.h"
#include "math.h"
#include "conio.h"
 
 
void lr1 ()
{
double A = 1.5, B = 2;
double X,Y;
clrscr();
cout<<"\nLR1: Vi4islit' zna4enie funkcii pri A=1.5, B=2 i proizvol'nom x. y=5korAx+3korBx. \nVvedite luboe zna4enie neizvestnoi peremennoi virogenia - X: ";
  cin>>X;
  Y=pow((A*X),0.2)+pow((B*X),0.3);
  cout<<"Zna4enie funkcii Y="<<Y<<"\n \n";
}
 
 
void lr2 ()
{
clrscr();
float A,B,C,D;
cout<<"\nLR2: Proverit' kakie iz 4isel A,B,C,D ne prenadlegat intervalu (3;15). \nPervoe 4islo A=";
cin>>A;
cout<<"Vtoroe 4islo B=";
cin>>B;
cout<<"Tret'e 4islo C=";
cin>>C;
cout<<"4etvertoe 4islo D=";
cin>>D;
  if (A<3 & A>15)
  cout<<"A ne prinadlezhit intervalu (3,15)\n";
  if (B<3 & B>15)
  cout<<"B ne prinadlezhit intervalu (3,15)\n";
  if (C<3 & C>15)
  cout<<"C ne prinadlezhit intervalu (3,15)\n";
  if (D<3 & D>15)
  cout<<"D ne prinadlezhit intervalu (3,15)\n";
  if (A>3 & A<15)
  cout<<"A prinadlezhit intervalu (3,15)\n";
  if (B>3 & B<15)
  cout<<"B prinadlezhit intervalu (3,15)\n";
  if (C>3 & C<15)
  cout<<"C prinadlezhit intervalu (3,15)\n";
  if (D>3 & D<15)
  cout<<"D prinadlezhit intervalu (3,15)\n";
  cout<<"\n";
}
 
 
void lr3 ()
{
clrscr();
float N,i;
  int Y;
  float X[100];
  cout<<"\nLR3: Iz N vvedennih c klaviaturi 4isel nape4atat' pologitel'noe, kratnoe 3.\nVvedite kolli4estvo 4isel N:";
  cin>>N;
  for (i = 1; i<=N; i++)
  {
    cout<<"Vvedite "<<i<<" zna4enie: ";
    cin>>X[i];
  }
  for (i = 1; i<= N; i++)
    {
    Y=X[i];
    if (Y%3==0)
    if (Y>0)
    cout<<"polozhitelnoe 4islo kratnoe 3:"<<X[i]<<"\n";
    }
    cout<<"\n";
}
 
 
void lr4 ()
{
clrscr();
int k;
  float N;
  cout<<"\nLR4: Dano natural'noe 4islo N. Polu4it' naibol'shee 4islo vida 3^k, men'she N.\nVvedite natural'noe 4islo N:";
  cin>>N;
  k = 1;
  while (pow(3,k)<N)
  {
    k++;
  }
  k--;
  cout<<"Naibolshee 4islo men'she N = "<<pow(3,k)<<"\n";
  cout<<"pri stepeni 4isla 3, k = "<<k<<"\n \n";
}
 
 
void lr5 ()
{
clrscr();
cout<<"\nLR5: Vivesti na pe4at' pologitel'nie zna4enia funkcii z=sin(x)+5cos(x-2) dla x izmeniaushegosia na otrezke [5;-10] s shagom 1,2.";
float x,z;
  x = 5;
  do
  {
    z=sin(x)+5*cos(x-2);
    if (z > 0)
    cout<<"\nPologitel'noe zna4enie funkcii z="<<z<<",  pri zna4enii x="<<x<<";";
    x = x - 1.2;
  }
  while (x>=-10);
  cout<<"\n\n";
}
 
void ot4istka()
{
clrscr();
}
 
void zap()
{
FILE *out;
char n1[8];
printf("Vihodnoi fail\n");
gets(n1);
if ((out = fopen(n1, "wt"))== NULL)
printf("Ne mogu otkrit' vihodnoi fail\n");
fclose(out);
}
 
void err()
 {
 cout<<"\nOshibka vvoda!!!\n\n";
 }
 
void main()
{
pr:  int A;
  cout<<"Vvedite nomer operacii:\n 1 - LR1 lineinii algoritm;\n 2 - LR2 Razvetvliaiushiisa algoritm;\n 3 - LR3 Cikli4eskii algoritm for;\n 4 - LR4 Cikli4eskii algoritm while;\n 5 - LR5 Cikli4eskii algoritm s postusloviem;\n 6 - ot4istka ekrana;\n 7 - exit.\n\n";
  cin>>A;
  switch (A)
  {
  case 1: lr1(); goto l; break;
  case 2: lr2(); goto l; break;
  case 3: lr3(); goto l; break;
  case 4: lr4(); goto l; break;
  case 5: lr5(); goto l; break;
  case 6: ot4istka(); goto pr; break;
  case 7: goto ex; break;
  default: err(); goto pr;
  }
l:
int B;
  cout<<"Dlia vihoda v glavnoe meniu najmite 11;\nDlia vihoda iz programmi najmite 12.\n\n";
  cin>>B;
  switch (B)
  {
  case 11: goto pr; break;
  case 12: goto ex; break;
  default: err();  goto pr;
  }
ex:
 cout<<"Programma okon4ena\n";
 zap();
 getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2010, 15:21     Запись в файл
Посмотрите здесь:

C++ Запись в файл
Запись в файл C++
C++ запись в файл С++
C++ Запись в файл
C++ запись в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zerkalka
 Аватар для Zerkalka
37 / 36 / 2
Регистрация: 09.03.2010
Сообщений: 79
26.10.2010, 15:36     Запись в файл #2
для записи в файл функция fprintf
ArtSL
 Аватар для ArtSL
8 / 7 / 0
Регистрация: 14.02.2010
Сообщений: 40
26.10.2010, 15:39     Запись в файл #3
Смотри:
C++
1
2
3
4
5
FILE *fp;
fp = fopen("fail.txt", "w"); // создастся файл fail.txt и указателю fp присвоится адрес этого файла
count = 5;
fprintf(fp, "%d", &count); // запись в файл fp переменной count
fclose(fp);
Zerkalka
 Аватар для Zerkalka
37 / 36 / 2
Регистрация: 09.03.2010
Сообщений: 79
26.10.2010, 15:40     Запись в файл #4
то есть в вашем случае скорее всего будет примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
void zap()
{
FILE *out;
char n1[8];
printf("Vihodnoi fail\n");
gets(n1);
if ((out = fopen(n1, "wt"))== NULL)
{printf("Ne mogu otkrit' vihodnoi fail\n");}
else {fprintf(out, "что-то для вывода в файл");}
fclose(out);
}
kemper88
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 7
26.10.2010, 15:57  [ТС]     Запись в файл #5
Zerkalka так это он в файл запишет то что я напишу в кавычках а мне нужно чтобы записал то что мне выводиться на экран при выполнении программы.
ArtSL Так тоже попробовал жаловался на count я поменял на cout и он мне в файл записывает "3424".
Zerkalka
 Аватар для Zerkalka
37 / 36 / 2
Регистрация: 09.03.2010
Сообщений: 79
26.10.2010, 16:17     Запись в файл #6
kemper88, попробуй тогда создать свой поток (stringstream) и в него передавать данные аналогично cout.
попробуй как-то так (не проверяла, но должно работать):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void zap(stringstream &strstream)
{
FILE *out;
char n1[8];
printf("Vihodnoi fail\n");
gets(n1);
if ((out = fopen(n1, "wt"))== NULL)
{printf("Ne mogu otkrit' vihodnoi fail\n");}
else {fprintf(out, strstream.str());}
fclose(out);
}
 
void main();
{
   stringstream stream;
   cout << "Programma okon4ena\n";
   stream << "Programma okon4ena\n";
   zap(stream);
}
суть должна быть понятна

Добавлено через 3 минуты
если не примет strstream.str(), то из потока strstream можно записать в переменную требуемого типа (аналогично cin)
ArtSL
 Аватар для ArtSL
8 / 7 / 0
Регистрация: 14.02.2010
Сообщений: 40
26.10.2010, 16:18     Запись в файл #7
ну ясно, count же не объявлен......
count заменил на cout???))))) ну ты жжешь.
count - это просто так переменную обозвал, cout - это оператор вывода на экран.
Хотя возможно я тебя не понял....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 08:53     Запись в файл
Еще ссылки по теме:

Запись в файл C++
запись в файл. не создается файл C++
C++ Запись в файл

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.10.2010, 08:53     Запись в файл #8
Цитата Сообщение от ArtSL Посмотреть сообщение
Смотри:
C++
1
2
3
4
5
FILE *fp;
fp = fopen("fail.txt", "w"); // создастся файл fail.txt и указателю fp присвоится адрес этого файла
count = 5;
fprintf(fp, "%d", &count); // запись в файл fp переменной count
fclose(fp);
когда юзаем printf() переменные передаём без взятия адреса
взятия адреса требуют %s, %n, %p
первая выводит строку, поэтому ей нужно знать адресы всех символов и она будет их вычислять по адресу первого
вторая меняет переменную, то есть необходим адрес, по которому функция перейдёт, чтобы произвести изменение
третья как раз и предназначена для вывода адреса

Добавлено через 2 минуты
C
1
fprintf(fp, "%d", &count);
если сделать это, то в файл запишется адрес
Yandex
Объявления
27.10.2010, 08:53     Запись в файл
Ответ Создать тему
Опции темы

Текущее время: 16:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru