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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kemper88
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 7
#1

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

26.10.2010, 15:21. Просмотров 567. Ответов 7
Метки нет (Все метки)

Здравствуйте. У меня такой вопрос. Вот есть программа выводящая лабораторные на экран и мне нужно чтобы все результаты с экрана записывались в файл. Пока что у меня создает файл но ничего туда не пишет.
Подскажите пожалуйста где ошибка?
Функция записи находиться в 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2010, 15:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись в файл (C++):

запись в файл. не создается файл - C++
#include &lt;graphics.h&gt; // vkljy4it' opisanie grafi4eskix fynkcij Ñ/Ñ++ Borland'ah #include&lt;stdio.h&gt; #include &lt;conio.h&gt; // opisanie...

Запись в файл - C++
Здравствуйте. Такая вот проблема: Есть функция, вычисляющая на встроенном ассемблере уравнение. Значения должны браться из файла input.txt...

Запись в файл С++ - C++
Народ подскажите как сделать что бы прохождении теста при выборе ответа у меня эти ответы записывался в текстовый файл #include...

Запись в файл - C++
Добрый день! Изучаю тему открытия файла для чтения и записи и мне кое-что непонятно в данной программе: #include &lt;fstream.h&gt; int...

Запись в файл - C++
Вот программа: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; int i; int fact (int...

Запись в файл - C++
Файл (пустой) действительно есть, и путь указан правильно, но выдается ошибка при открытии фаила. Делала всё по ...

7
Zerkalka
37 / 36 / 2
Регистрация: 09.03.2010
Сообщений: 79
26.10.2010, 15:36 #2
для записи в файл функция fprintf
1
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);
1
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);
}
1
kemper88
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 7
26.10.2010, 15:57  [ТС] #5
Zerkalka так это он в файл запишет то что я напишу в кавычках а мне нужно чтобы записал то что мне выводиться на экран при выполнении программы.
ArtSL Так тоже попробовал жаловался на count я поменял на cout и он мне в файл записывает "3424".
0
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)
1
ArtSL
8 / 7 / 0
Регистрация: 14.02.2010
Сообщений: 40
26.10.2010, 16:18 #7
ну ясно, count же не объявлен......
count заменил на cout???))))) ну ты жжешь.
count - это просто так переменную обозвал, cout - это оператор вывода на экран.
Хотя возможно я тебя не понял....
1
accept
4822 / 3243 / 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);
если сделать это, то в файл запишется адрес
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 08:53
Привет! Вот еще темы с ответами:

Запись в файл - C++
У меня есть вот такая запись Fasola 1.8 21 Cebula 1.65 10 И мне нужно считать и записать её в файл. scanf(&quot;%s&quot;,&quot;%i&quot;,&quot;1f&quot;,name,...

Запись в файл - C++
Здравствуйте! Мне нужна Ваша помощь... У меня есть практическая работа по программированию и есть одна задача которая.....нуууу никак не...

запись в файл - C++
здравствуйте) у меня символы не правильно записываются в файл ......... fstream file1,file2; ...

Запись в файл - C++
Собствено у меня в програме функция записи в файл реализована следующим образом std::string fileName; std::cout &lt;&lt; &quot;Введите слово: &quot;;...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
27.10.2010, 08:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru