69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
typedef struct maxtrix
{
unsigned int row;
unsigned int col;
float **value;
}Martrix;
int SetMatrixRowAndCol(Martrix *matrix, unsigned int row, unsigned int col);
int SetMatrixValue(Martrix *matrix,int x, int y, float** value);
int GetMatrixValue(Martrix *matrix,int x, int y, float** value);
int OPEN(Martrix *matrix,int x, int y, float** value);
int main()
{
Martrix matrix; // jernymy
int i;
printf("请您设定矩阵的行数: ");
scanf("%u",&matrix.row); // jernymy if use pointer, here error
printf("请您设定矩阵的列数: ");
scanf("%u",&matrix.col); // jernymy if use pointer, here error
SetMatrixRowAndCol(&matrix, matrix.row, matrix.col);
SetMatrixValue(&matrix,matrix.row,matrix.col,matrix.value);
GetMatrixValue(&matrix,matrix.row,matrix.col,matrix.value);
OPEN(&matrix, matrix.row, matrix.col, matrix.value);
// jernymy free buf start
for(i=0; i<(int)matrix.row; i++)
{
if (*(matrix.value+i))
{
free(*(matrix.value+i));
*(matrix.value+i) = NULL;
}
}
if (matrix.value)
{
free(matrix.value);
matrix.value = NULL;
}
// jernymy free buf end
return 0;
}
int SetMatrixRowAndCol(Martrix *matrix, unsigned int row, unsigned int col)
{
unsigned int i;
(matrix->value) = (float **)malloc(sizeof(float *) *row); // jernymy
memset((matrix->value), 0, sizeof(float *) *row);
for(i=0;i<row;i++)
{
*(matrix->value+i) = (float *)malloc(sizeof(float) * col);
memset(*(matrix->value+i), 0, sizeof(float) * col); // jernymy
}
return 0;
}
int SetMatrixValue(Martrix *matrix,int x, int y, float** value)
{
int i,j;
printf("请按行的顺序依次输入矩阵各项的值(共%d项):\n",x*y);
for(i=0;i<=x-1;i++)
{
printf("\n"); // jernymy use printf
for(j=0;j<=y-1;j++)
{
scanf("%f", &value[i][j]);
}
}
return 0;
}
//int GetMatrixValue(Martrix *matrix,int x, int y, float** value)
int GetMatrixValue(Martrix *matrix,int x, int y, float** value) // jernymy
{
int i,j;
for(i=0;i<=x-1;i++)
{
printf("\n");
for(j=0;j<=y-1;j++)
printf("%f ", value[i][j]); // jernymy
}
return 0;
}
int OPEN(Martrix *matrix,int x, int y, float** value)
{
FILE *fp;
fp=fopen("OPEN.txt","a+");
if (NULL == fp)
{
printf("open OPEN.txt fail!\n");
return -1;
}
if(matrix)
{
int i,j;
for(i=0;i<=x-1;i++)
for(j=0;j<=y-1;j++)
fprintf(fp, "%f ", value[i][j]); // jernymy
}
fclose(fp);
fp = NULL;
return 0; // jernymy
}