我正在开设一门C课程,用于入门课程,现在我被困了。
程序通过泰勒级数展开计算cos(x)的近似值。
问题在于它从数据中读取输入。文件,其中包含一定数量的三行数,每行包含要处理的信息。
例如,dat。文件可能是:
5
1 -1 6
2 1 .0001
2 1.5 2
...
每行的第一个数字决定了计算cos(x)的方法,第二个数字决定了x的值,等等。
我将此文件作为多维数组处理:
int array[64][64], m;
FILE *ifp
ifp = fopen("cos_input.dat", "r");
i = 0;
fscanf(ifp, %d\n", &m); //takes the first value into int m
while (fscanf(ifp, "%d %d %d\n", &array[i][0], &array[i][1], &array[i][2]) == 3) {
i++;
}
^这段代码(我认为)将输入数据文件放入m×3数组中。
现在我需要操作数组的元素,然后将它们写入另一个输出数据。文件,采用表格,例如:
x = 1
x = 2
x = 3
x = 4
...
我实现这一点的想法首先是用存储在多维数组中的值实现我的其他函数,我相信我可以做,只是声明我的数组的每个值并将它们扔进计算混合器中我的其他功能。 (例如,power(array [3] [2],array [1] [2]);)然后我必须将它们打印到dat。文件,我不知道怎么做。
这是因为我对指针和fprintf / fscanf函数的了解非常粗略。
当我编写最终数据时,它将包含一些循环,每行将吐出一个值。要将此打印到cos_output.dat,要使用的代码是什么?我必须创建一个新的指针表达式'ofp',类似于我创建'ifp'的方式,以便打开输入文件并用scanf实现它吗?
这是我到目前为止能够提出的第一步也是唯一一步。
FILE *ofp; //output file pointer
ofp = fopen("cos_output.dat", "w"); //the final output data file
//.... how to print? T_T
谢谢,非常感谢您的帮助!
(http://ece15.ucsd.edu/Labs/lab3.pdf)< - 仅在我的解释不清楚的情况下链接到作业(问题1)。
答案 0 :(得分:0)
您可以通过执行类似
的操作来打印文件FILE *ofp; //output file pointer
ofp = fopen("cos_output.dat", "w"); //the final output data file
for (i = 0; i < 5; i++) {
fprintf(ofp, "x = %d\n", i);
}
这将生成包含
的cos_output.dat
文件
x = 0
x = 1
x = 2
x = 3
x = 4
您可以修改此fprintf()
语句以输出您想要的任何内容。有关详细信息,请参阅fprintf(3)
。