[英]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.