Vì vậy, tôi có lỗi này:Lỗi cú pháp: thiếu ';' trước khi 'loại'
Error 3 error C2143: syntax error : missing ';' before 'type' g:\lel\tommy\tommy\tommy.c 34 tommy
từ khối mã này:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
#include <conio.h>
struct matrep {
unsigned rows,cols;
double *matrix;
};
int matrix_read(struct matrep *mat, const char *filename)
{
FILE *fptr;
unsigned m, n;
if ((fptr = fopen(filename, "r")) == NULL)
{
fprintf(stderr, "Cannot Open File %s\n", "matrixA.txt");
return -1;
}
if (fscanf(fptr, "\n\nnrows %u, columns %u\n\n", &m, &n) != 2)
{
fprintf(stderr, "Failed to read dimensions\n");
return -1;
}
mat->matrix = (double *)malloc(sizeof(double) * m * n);
if (mat->matrix == 0)
{
fprintf(stderr, "Failed to allocate %d*%d matrix\n", m, n);
return -1;
}
double *ptr = mat->matrix;//this is where it says that the error occured.
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
double x;
if (fscanf(fptr, " %5.2lf", &x) != 1)
{
fprintf(stderr, "Failed to read element matrix[%d,%d]\n", i, j);
free(mat->matrix);
mat->matrix = 0;
mat->columns = 0;
mat->rows = 0;
return -1;
}
*ptr++ = x;
}
}
fclose(fptr);
mat->columns = m;
mat->rows = n;
return 0; // Success
}
int main(int argc, _TCHAR* argv[])
{
return 0;
}
Tôi không có ý tưởng gì đó có nghĩa là, hoặc nơi tôi đang làm sai lầm. Hãy giúp tôi.
UPDATE:
Trong khi câu hỏi ban đầu đã được giải quyết, tôi đã nhận được báo lỗi chính xác như nhau, nhưng trong một khối mã, và tôi đang viết theo khuyến cáo của các câu trả lời lựa chọn:
int matrix_multiplication(struct matrep *mat_left,struct matrep *mat_right,struct matrep *result)
{
if(mat_left->cols != mat_right->rows)
{
fprintf(stderr, "The number of columns from the left matrix are different from the number of colums from the right matrix");
return -1;
}
double *p = NULL;//this is where the same error occurs the first time
double *pa = NULL;
int i,j;
result->rows = mat_left->rows;
result->cols = mat_right->cols;
p = result->matrix;
for (pa = mat_left->matrix, i = 0; i < mat_left->rows; i++, pa += mat_left->cols)
for (j = 0; j < b->w; j++)
*p++ = dot(pa, mat_right->matrix + j, mat_left->cols, mat_right->cols);
return 0;
}
Tôi thực sự bị mất ở đây, tôi đang đọc mã này và không biết tại sao nó lại cho tôi lỗi tương tự.
Chỉ cần ghi chú nhanh để thêm vào các câu trả lời khác, bạn đã khai báo "cols" trong cấu trúc, nhưng bạn sử dụng "cột" trong vòng lặp lồng nhau – John