Как записать несколько строк в выходной файл на C?

Я новичок в файловых операциях, таких как запись/чтение в C. Есть ли решение для записи всех приведенных ниже printf() в мой выходной текстовый файл? После выполнения я не смог записать все строки в свой текстовый файл.

for(i=0;i < n;i++)
    if(i!=startnode)
    {
        outputFile = fopen(myOutputFile, "w");

        printf("\nCOST of %d = %d", i, cost[i]);
        printf("\nTRACE = %d", i);

        j=i;
        do
        {
            j=pred[j];
            printf(" %d", j);

        }
        while(j!=startnode);
    }

person xxxx    schedule 31.03.2016    source источник
comment
fprintf(выходной файл, FMT, ARGS);   -  person Vasiliy Soshnikov    schedule 31.03.2016
comment
Да, я пытался, но в мой файл печатается только последний расчет. Мне нужны все значения i и cost[i] в ​​моем файле. также значение j.   -  person xxxx    schedule 31.03.2016
comment
использовать freopen(fileName,w,stdout); вместо outputFile = fopen(myOutputFile,w); Затем используйте только printf() для печати в файле.   -  person Shafi    schedule 31.03.2016
comment
Вероятно, вам следует поставить fopen перед циклом for и поставить fclose(myOutputFile) после завершения цикла for.   -  person Ian Abbott    schedule 31.03.2016


Ответы (3)


Вы можете использовать fprintf(FILE * stream, const char * format, ...) и передайте дескриптор файла в функцию.

for(i=0;i < n;i++)
    if(i!=startnode)
    {
        outputFile = fopen(myOutputFile, "a");

        fprintf(outputFile,"\nCOST of %d = %d", i, cost[i]);            
        fprintf(outputFile,"\nTRACE = %d", i);

        j=i;
        do
        {
            j=pred[j];
            fprintf(outputFile," %d", j);

        }
        while(j!=startnode);
       fclose(outputFile);
    }

Изменить в соответствии с вашим комментарием:

В соответствии с вашим комментарием обновите режим, в котором вы открываете файл: fopen("asdas","a")

person ckruczek    schedule 31.03.2016
comment
Да, я пытался, но в мой файл печатается только последний расчет. Мне нужны все значения i и cost[i] в ​​моем файле. также значение j в инструкции do/while. - person xxxx; 31.03.2016
comment
Добавление к файлу должно решить проблему. Все остальное в вашем вопросе неизвестно. Вы должны обновить свой вопрос соответственно. - person ckruczek; 31.03.2016
comment
спасибо @ckruczek это сработало. Но мне нужно что-то, чтобы очистить мой файл. Потому что, когда я запускаю снова, он всегда перезаписывает и создает сложные данные внутри моего файла. - person xxxx; 31.03.2016
comment
На это много ответили. Например, здесь. - person ckruczek; 31.03.2016

Попробуй это:

outputFile = fopen(myOutputFile, "a");
for(i=0;i < n;i++)
    if(i!=startnode)
    {    
        fprintf(outputFile,"\nCOST of %d = %d", i, cost[i]);            
        fprintf(outputFile,"\nTRACE = %d", i);

        j=i;
        do
        {
            j=pred[j];
            fprintf(outputFile," %d", j);

        }
        while(j!=startnode);
    }
person Đăng Khoa Huỳnh    schedule 31.03.2016

Попробуй это:

freopen(myOutputFile, "a+",stdout);  //Redirect the standard output to file, "a+" - is for appending info if the file is has data before it is openned
for(i=0;i < n;i++)
{        
    if(i!=startnode)
    {
        printf("\nCOST of %d = %d", i, cost[i]);            
        printf("\nTRACE = %d", i);

        j=i;
        do{
            j=pred[j];
            printf(" %d", j);

        }while(j!=startnode);
    }
}
person Shafi    schedule 31.03.2016