Печать выходных данных C в текстовый файл

#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 — почему вы используете ввод-вывод на C freopen ?

Ответ №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);
        }
}