c - 输出到文件

时间:2010-03-07 09:57:42

标签: c

如果我有一个整数数组,我想输出到文本文件..

void output()
{   
    for (i=0; i<10; i++)
        printf("%d ", values[i]);
}

如何使用以下方法将output()保存到文本文件?

void writeToFile()
{   
    file = fopen("file.txt","a+"); // apend file or create a file if it does not exist
    fprintf(file,"%d", *missing parameter*); // write
    fclose(file); // close file
    printf("File created. Located in the project folder.\n", "");
}

4 个答案:

答案 0 :(得分:4)

作为创建两个函数的替代方法(根据AareP's answer),您可以向output()函数添加目标参数:

void foutput(FILE *dest, int values[])
{   
    int i;

    for (i=0; i<10; i++)
        fprintf(dest, "%d ", values[i]);
}

然后,您可以将原始output()重新实现为一个简单的包装器:

void output(int values[])
{
    foutput(stdout, values);
}

在这种情况下,这似乎不太有用,但我把它放在这里,因为当输出函数的逻辑更复杂时,这种通用模式会很有用。一般来说,最好将它保存在一个地方,而不是将其复制到多个函数中(这意味着你只需要在一个地方修复bug,一方面)。

答案 1 :(得分:1)

添加其他人所说的内容:

您必须始终在fopen之后检查错误,错误返回时为NULL

FILE *file = fopen("file.txt","a+"); 
if(!file) {
        fprintf(stderr,"error opening file...exiting\n");
        exit(1);
}

答案 2 :(得分:0)

只需创建两个函数:

void output()
{   
    for (i=0; i<10; i++)
        printf("%d ", values[i]);
}

void output(FILE* file)
{   
    for (i=0; i<10; i++)
        fprintf(file, "%d ", values[i]);
}

答案 3 :(得分:0)

如果您想重复使用输出功能,可以执行以下操作。 使用a_output函数,您将能够在控制台或任何其他输出流中打印结果。

#include <assert.h>
#include <stdio.h>

void a_output(FILE *fs, int *array, unsigned int array_s);

void a_output(FILE *fs, int *array, unsigned int array_s){
    int i;

    assert(fs != NULL);
    assert(array != NULL);

    for(i = 0; i < array_s ; i++){
        fprintf(fs, "%d ", array[i]);
    }
}

int main(int argc, char **argv)
{
    int array[5] = {1, 2, 3, 4, 5 };
    FILE *out;

    if((out = fopen("output.txt", "w")) == NULL){
        return -1;
    }
    /* Will "print" results in a file */
    a_output(out, array, 5);

    /* Will "print" results in console */
    a_output(stdout, array, 5);

    fclose(out);
    return 0;
}