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

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

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

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

26.10.2010, 15:21. Просмотров 559. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2010, 15:21     Запись в файл
Посмотрите здесь:

Запись в файл - C++
Ребята, когда я записываю в файл текст с помощью этого кода, то в файле получается первая строка пустая и только потом идет текст. Где у...

запись в файл - C++
как открыть файл для записи находящийся по определенному адресу в файловой системе

Запись в файл - C++
Задача переписать из одного файла в другой слова, в перевернутом виде. например: 1 файл: привет как ты 2 файл: п к т р а ы и...

Запись в файл - C++
Мне нужно, чтобы данная программа вывела ответ в екселевский файл. Но почему то не выходит. Файл создал прям на диске &quot;С&quot; с названием...

Запись в файл - C++
подскажите где я косячнул при записи в файл В общем суть такая косяк свой никак не найду . При открытии файла всё прекрасно...

Запись в файл - C++
Приветствую. Такая проблема. Если находит в структуре совпадение с введенным номером, то удаляет из массива эту структуру. Но почему то...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zerkalka
37 / 36 / 2
Регистрация: 09.03.2010
Сообщений: 79
26.10.2010, 15:36     Запись в файл #2
для записи в файл функция fprintf
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
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
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
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++
здравствуйте) у меня символы не правильно записываются в файл ......... fstream file1,file2; ...

Запись в файл - C++
Пытаюсь создать файл с именем, вводимым пользователем, и записать в него какие-то данные. Однако записываются только символы до пробела,...

запись в файл - C++
есть процедура по поиску короткого слова как записать результат поиска в отдельный файл setlocale(0,&quot;rus&quot;); ...

Запись в файл - C++
Запарился искать по гуглу, как правильно 1) открыть файл 2) запись 3) закрыть файл 1 и 2 нашел FILE *file; 1.)...


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 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     Запись в файл
Ответ Создать тему
Опции темы

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