#c
#c
Вопрос:
У меня есть код на C , который я хочу, чтобы выходные данные были напечатаны в текстовом файле. Выходные данные печатаются по одному за раз, что означает, что когда я открываю текстовый файл, появляется вывод, а когда я закрываю и снова открываю его, появляется другой вывод. Как я могу сделать так, чтобы каждый раз, когда он печатал выходные данные, все они печатались и оставались в текстовом файле, чтобы я мог видеть все результаты в текстовом файле?
#include <iostream>
#include "math.h"
#include <stdio.h>
using namespace std;
float p(int N, int k, float R);
int main ()
{
float R=0.158; float N=65;
float mean = 0.0; float ps=0.0;
for (int k=1; k<=N; k )
{
float prob=p(N,k,R); ps = ps prob;
mean = mean k*prob;
freopen ("output.txt","w",stdout);
cout << k << " " << p(N,k,R) << endl;
}
cout << "ps: " << ps << " mean: " << mean << endl;
}
float p(int N, int k, float R)
{
if (k==1)
{
return pow(R,N-1);
}
else if (N==k)
{
return pow(1-R,(k*(k-1))/2);
}
else
{
return p(N-1,k,R)*(1-pow(1-R,k)) p(N-1,k-1,R)*pow(1-R,k-1);
}
}
Комментарии:
1. Как
p
функция связана с самим вопросом? Хотя это не так много дополнительного кода, этот пример не является минимальным .2. Мало того, что он содержит слишком много, кажется, что чего-то не хватает.
3. Используйте
freopen
. Откройте текстовый файл,freopen("myFile.txt", "w", stdout)
указанный в начале int main(), и закройте его перед возвратом 0. Всеcout
выходные данные будут напечатаны в этом myFile.txt вместо консоли.4. Одноминутный поиск в Google выдает это. Как использовать файлы в C
5. свободное открытие. 3p — Режим ручной страницы Linux :
"w - Truncate file to zero length or create text file for writing. The stream is positioned at the beginning of the file."
— это довольно ясно. Если у вас есть код на C — почему вы используете ввод-вывод на Cfreopen
?
Ответ №1:
Просматривая все отзывы, которые я получил в связи с этой угрозой, я уже получил свой код для печати выходных данных в текстовый файл, как вы можете видеть в коде ниже.
#include <iostream>
#include "math.h"
#include <stdio.h>
using namespace std;
float p(int N, int k, float R);
int main ()
{
freopen ("output.txt","w",stdout);
float R=0.158; float N=65;
float mean = 0.0; float ps=0.0;
for (int k=1; k<=N; k )
{
float prob=p(N,k,R); ps = ps prob;
mean = mean k*prob;
cout << k << " " << p(N,k,R) << endl;
}
cout << "ps: " << ps << " mean: " << mean << endl;
fclose (stdout);
return 0;
}
float p(int N, int k, float R)
{
if (k==1)
{
return pow(R,N-1);
}
else if (N==k)
{
return pow(1-R,(k*(k-1))/2);
}
else
{
return p(N-1,k,R)*(1-pow(1-R,k)) p(N-1,k-1,R)*pow(1-R,k-1);
}
}