因此,我在文本文件上创建了一个矩阵,如下所示:
1.0#2.2#3.4
3.4#5.5#1.0
6.6#5.5#1.0
我需要我的脚本读取行上的每个数字,将它们相加,然后创建一个新矩阵,结果是将每个数字除以整行的总和。例子:
1.0+2.2+3.4 = 6.6
我将创建的第二个矩阵的第一行是:
0.15#0.33#0.51 (because 1.0/6.6 is 0.15 etc.)
现在我可以打印整个矩阵,但我无法理解如何将行的每个数字保存为变量并将其添加到下一个数字中,对此有什么建议吗?
这是我目前的工作:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fptr;
double c;
// Open file
fptr = fopen("mat.txt", "r");
if (fptr == NULL) {
printf("Cannot open file \n");
exit(0);
}
// Read contents from file
c = fgetc(fptr);
while (c != EOF) {
printf ("%c", c);
c = fgetc(fptr);
}
fclose(fptr);
return 0;
}
假设您的matrix
will3*3
始终#
是大小并且是分隔符,在这种情况下,您可以使用fscanf
如下所示在 while 循环中读取 3 个值。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fptr;
double a=0,b=0,c=0;
double matrix[3][3];
// Open file
fptr = fopen("mat.txt", "r");
if (fptr == NULL)
{
printf("Cannot open file \n");
exit(0);
}
int i =0;
/*fscanf reads the 3 values each time into a,b and c*/
while (fscanf(fptr,"%lf#%lf#%lf", &a,&b,&c) == 3)
{
double sum = a+b+c;
matrix[i][0] = a/sum;
matrix[i][1] = b/sum;
matrix[i][2] = c/sum;
i++;
}
for (i=0;i<3;i++)
printf ("%lf %lf %lf\n", matrix[i][0],matrix[i][1],matrix[i][2]);
fclose(fptr);
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句