我有一个代码可以在名为(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;
}
答案 0 :(得分:4)
您在第一个FILE *
循环中打开一堆文件,但不要向它们写任何内容。在每次迭代中,您将新temporal
分配给变量for
,覆盖任何先前的值。之后,在第二个temporal
循环中,您将一堆输出写入打开的最后一个文件 - fclose()
在该点处引用的文件。
看起来你想要将第二个for循环的主体和for
移动到第一个devicemapper
循环中。
答案 1 :(得分:1)
我已正确格式化你的代码,现在John的评论立即突出:括号位于错误的行上,导致循环和块错误!
如果您自己正确格式化了代码,您可能会立即看到它!