Hỏi cách truyền tham trị cho mảng 2 chiều

Anh copy từ trang [cplusplus][1] thôi. Thực tế không cần ép kiểu. strlen trả về size_t, tương đương với unsigned rồi.

size_t
Unsigned integral type

Kiêm tra lại mấy cái chỗ mở file, coi thử có mở file được hay không rồi mới xử lý tiếp.

FILE *f = fopen(fi,"rt");

Mấy cái lỗi dạng này là do truy xuất vùng nhớ tầm bậy.
[1]: http://www.cplusplus.com/reference/cstring/strlen/

Không thể debug được, thế làm sao để kiểm tra lỗi vậy ?

Khi bạn dùng mảng cố định thì cái nay = MAXARR, cái này nên thay là lens hay 1 biến nào đó thể hiện chiều dài chuỗi thay vì lặp lại.

Mảng lớn 4.000.000 phần tử trong 1 chương trình con mà lại sử dụng mảng cố định là không nên

Trong C hình như không có tham số “t” trong fopen

Has stop working là do bạn truy cập mảng với chỉ số âm

Theo mình có thể bạn đang làm việc với thuật toán chuỗi con chung:

  1. Khi khởi tạo l[i][j] i==0 hoặc j==0 bạn đặt l[i][j] =0 để không bị lỗi. Sau đó chạy i,j từ 1->lens
  2. Thay

bằng chiều dài của chuỗi

1 Like

Anh cũng chưa xài cái “t” bao giờ, nhưng hôm trước anh đọc về fopen trên cplusplus thì thấy “t” là optional, dùng để chỉ mình đang đọc text file.

If additional characters follow the sequence, the behavior depends on
the library implementation: some implementations may ignore additional
characters so that for example an additional “t” (sometimes used to explicitly state a text file) is accepted.

1 Like

Tại sao lại là chỉ số âm ?

Has stop working là do bạn truy cập mảng với chỉ số âm.

Trong vòng for mình quote ấy. I, j bắt đầu từ 0, bạn trừ 1 nữa thành -1 là chỉ số âm.
để tránh lỗi này bạn thêm đk:

if(i==0 || j==0) l[i][j]=0;
else{
    ... Câu lệnh trong 2 vòng for của bạn
}

Mình đã thử đổi để nó không truy cập số âm nhưng vẫn không được ??? tạo sao vậy nhỉ ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?