繁体   English   中英

使用C以特定格式的矩阵打印

[英]Print in a specific format matrix with C

嘿,这令人沮丧,我也不知道为什么它不起作用。 截至目前,我只想制作一个基本的2 x 2矩阵。 in_file将是

   2.000000000 3.00000000
   6.000000000 5.00000000

所以代码如下

#include <stdlib.h>
#include <stdio.h>
#define ELEMENTS 1
#define n 1

double Angstroms[ELEMENTS];
double Energy[ELEMENTS];
double ax[ELEMENTS][n];

void file_input ();
void polynomial ();
// void conversion ();

int main () {
     file_input ();
     polynomial ();
//     conversion ();
   return 0;
 }

void file_input () {

     float a, b;
     int i;

     FILE * in_file = fopen("H2Mini.txt", "r");
     for (i = 0; i <= ELEMENTS; i++) {
          fscanf(in_file, "%f %f\n", &a, &b);
          Angstroms[i] = a;
          Energy [i] = b;
     }
     fclose(in_file);
}

void polynomial () {

      int i;
      FILE * outfile = fopen("PolyTest1.txt", "w");
      if (outfile == NULL) {
         printf ("Error file does not exist");
         exit (-1);
       }

      for (i = 0; i <=ELEMENTS; i++) {
          ax[i][0] = 1;
         // printf ("\n");
          ax[i][1] = Angstroms[i];
          fprintf (outfile, "%.8f %.8f\n", ax[i][0], ax[i][1]);
      }

}

外档使这个

 [1.00000000 2.00000000
  1.00000000 1.00000000]

我希望外档看起来像这样

 [1.00000000 1.00000000
  2.00000000 6.00000000]

我真的不明白为什么外文件看起来像这样,所以任何输入都请告诉我。

这段代码

#define ELEMENTS 1
....
double Angstroms[ELEMENTS];
double Energy[ELEMENTS];

正在制作两个数组,每个数组一个元素(因此,最大索引将为0)。 当您尝试访问埃索引1处的元素时,您将陷入未定义的行为。 您只是偶然发现了一个没有分段错误的情况。


编辑:例如,参见此问题。 看来您在定义n时犯了类似的错误,我认为应该也是2。

此外,我认为当程序正确运行时,您不会获得想要的输出,我想您会得到

1.00000000 2.00000000
1.00000000 6.00000000

每次将ax [i] [0]设置为1,然后在每行上将其打印为第一个数字,然后在第i个输入行上打印Angstroms [i],这是第一个数字。 至少如果我正确理解此代码:

ax[i][0] = 1;
ax[i][1] = Angstroms[i];
fprintf (outfile, "%.8f %.8f\n", ax[i][0], ax[i][1]);

如果看起来令人困惑,请不要气!!

这可能会有所帮助:

#include <stdlib.h>
#include <stdio.h>
#define ELEMENTS 2

double Angstroms[ELEMENTS];
double Energy[ELEMENTS];

void file_input ();
void polynomial ();

int main () {
     file_input ();
     polynomial ();
   return 0;
 }

void file_input () {

     float a, b;
     int i;

     FILE * in_file = fopen("H2.txt", "r");
     for (i = 0; i < ELEMENTS; i++) {
          fscanf(in_file, "%f %f\n", &a, &b);
          Angstroms[i] = a;
          Energy [i] = b;
     }
     fclose(in_file);
}

void polynomial () {

      int i;
      FILE * outfile = fopen("PolyTest1.txt", "w");
      if (outfile == NULL) {
         printf ("Error file does not exist");
         exit (-1);
       }
      fprintf (outfile, "%.8f %.8f\n", 1.0, 1.0);
      for (i = 0; i < ELEMENTS; i++) {
          fprintf (outfile, "%.8f ", Angstroms[i]);
      }
      fclose(outfile);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM