代码之家  ›  专栏  ›  技术社区  ›  Jason

从文件读取数据并打印到另一个文件的程序

  •  0
  • Jason  · 技术社区  · 12 年前

    我正在为一门入门课程编写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 x 3数组中。

    现在我需要操纵数组的元素,然后将它们写入另一个输出数据。文件,格式为,例如:

        x = 1
        x = 2
        x = 3
        x = 4
        ...
    

    我的想法是,首先,用存储在多维数组中的值来实现我的其他函数,我相信我可以这样做,只需声明数组的每个值,然后将它们放入计算混合器,这就是我的其他功能。(例如,功率(阵列[3][2],阵列[1][2]);)然后我必须将它们打印到数据库中。我不知道该怎么做。

    这是因为我对指针和fprintf/fscanf函数的知识非常粗略。

    当我写最后的数据时,它将包含一个循环,每行输出一个值。要将其打印到cos_output.dat,需要使用什么代码?为了打开输入文件并用scanf实现它,我必须创建一个新的指针表达式“ofp”吗?

    这是我第一步,也是迄今为止唯一能想到的一步。

        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)。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Lee Duhem    12 年前

    您可以通过执行以下操作打印到文件

    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) 了解更多详情。