在C中创建和写入多个txt文件

时间:2016-10-14 15:19:20

标签: c

我有一个代码可以在名为(Nodes)的目录中创建j文件(Node [j] .ID),在这些j文件中,代码会写入NodeResults中包含的信息。目前代码既没有创建也没有写入文件,因为strcat函数不起作用。请知道如何更正代码以获取包含在NodeResults中的信息的创建文件?提前致谢。请找到以下代码:

{

    int period, j ;
    FILE*temporal;
    FILE* temp_time;
    char path[25];
    char* extention = ".txt";
    char s[30];
    char temporal2[25];
    long time_val = 0;
    _mkdir("Nodes");
    _mkdir("time"); 


    temp_time = fopen("Time/time.txt", "w");
    fprintf(temp_time, "%d,%d\n", ReportStep, Nperiods);
    fclose(temp_time);

    for ( j = 0; j < Nobjects[NODE]; j++ ) {
        /* File path writing */

        strcpy(temporal2,"Nodes/");
        strcat(temporal2, Node[j].ID);
        strcat(temporal2, extention);

        temporal= fopen(temporal2, "w"); 
    }                    
    for ( period = 1; period <= Nperiods; period++ ) {
        output_readNodeResults(period, j);
        fprintf(temporal, "%9.3f,%9.3f,%9.3f,%9.3f,%9.3f\n",
                    NodeResults[NODE_INFLOW],
                    NodeResults[NODE_OVERFLOW], 
                    NodeResults[NODE_DEPTH],
                    //NodeResults[NODE_HEAD],
                    NodeResults[NODE_VOLUME]);
    }
    fclose(temporal);

    return Nperiods;
}

2 个答案:

答案 0 :(得分:4)

您在第一个FILE *循环中打开一堆文件,但不要向它们写任何内容。在每次迭代中,您将新temporal分配给变量for,覆盖任何先前的值。之后,在第二个temporal循环中,您将一堆输出写入打开的最后一个文件 - fclose()在该点处引用的文件。

看起来你想要将第二个for循环的主体和for移动到第一个devicemapper循环中。

答案 1 :(得分:1)

我已正确格式化你的代码,现在John的评论立即突出:括号位于错误的行上,导致循环和块错误!

如果您自己正确格式化了代码,您可能会立即看到它!