我正在尝试将结果写入输出文件,并在Mac Terminal中运行此C程序。我已经通过直接写入终端来检查程序的所有部分是否工作,但是当我尝试写入文件时,什么也没发生。
“写入文件”行在每次迭代时都会写入,但是outputdata.txt文件没有任何反应。
我已经更改了权限,并且能够直接从终端写入此文件。但是,使用以下代码不起作用。
#define OUTPUTFILE "outputdata.txt"
FILE *ofp;
char ofile_name[50] = OUTPUTFILE;
ofp = fopen(ofile_name, "r");
for (p = 1; p <= NumPattern ; p++) {
for (k = 1 ; k <= numnodes_out ; k++) {
fprintf(ofp, "%f\n", output_nodes[p][k]);
fprintf(stdout, "Writing to file\n");
}
}
fclose(ofp);
答案 0 :(得分:4)
您正在以读取模式打开文件,请参见https://linux.die.net/man/3/fopen。
如果要写入文件,则必须使用支持写入的模式打开文件,例如:fopen(ofile_name, "w")
。
如果只想写入文件,则主要选择是:
此外,如果您查看前面提到的链接,则应注意,如果文件未成功打开,则该函数可能返回null。因此,您应该先检查fopen返回的FILE *是否不为null。
#define OUTPUTFILE "outputdata.txt"
FILE *ofp;
char ofile_name[50] = OUTPUTFILE;
ofp = fopen(ofile_name, "r");
if (ofp) {
for (p = 1; p <= NumPattern ; p++) {
for (k = 1 ; k <= numnodes_out ; k++) {
fprintf(ofp, "%f\n", output_nodes[p][k]);
fprintf(stdout, "Writing to file\n");
}
}
fclose(ofp);
}