01/10/2018, 17:32

Nhập file text vào mảng 2 chiều string trong C

Chào mọi người ạ, chuyện là hiện tại em đang có một file txt cần chuyển vào mảng 2 chiều string những chưa biết cách làm thế nào. Ai có thể chỉ giúp em với ạ.
-Đây là file mẫu .txt:

EternalRerosu viết 19:43 ngày 01/10/2018

đề bài không nói rõ mảng 2 chiều như thế nào
bản thân string cũng là 1 mảng
nên cứ đẩy hết vào 1 mảng với type là string thì cũng tính nó là mảng 2 chiều rồi

Lê Thành Công viết 19:41 ngày 01/10/2018

Bạn ơi, ý là mình muốn đẩy vào mảng 2 chiều string, mỗi phần tử là một từ ý bạn, gặp kí tự xuống dòng thì sẽ tạo một phần tử mới đến khi kết thúc file. Bạn giúp mình với, bài này ngồi 2 ngày rồi chưa biết làm thế nào?

Lê Thành Công viết 19:33 ngày 01/10/2018

Ví dụ sau khi nhập file vào mảng nó sẽ như thế này nè:
char word[][10] = {“my”, “name”, “is”, “cong”};

EternalRerosu viết 19:47 ngày 01/10/2018

ý bạn là vậy có đúng không ?
image

Lê Thành Công viết 19:46 ngày 01/10/2018

Dạ đúng rồi ạ, gặp kí tự xuống dòng sẽ tạo một phần tử mới

EternalRerosu viết 19:47 ngày 01/10/2018

bạn có thể dùng lệnh eof hoặc feof để duyệt tất cả dòng trong một tập tin
mỗi lần lấy 1 dòng trong tập tin bạn lại duyệt từng ký tự rồi đẩy vào mảng 2 chiều

Em có 1 hàm đọc file txt cho tới khi nào đến cuối file nên em thường dùng thế này: FILE *fp = fopen(...); while( ! feof(fp) ) { fgets(...); } Cơ mà nãy em vô tình xem được 1 post bên stackoverflow thì nó bảo cách dùng eof này sai rồi @@ ai có thể chỉ cho em cách dùng đúng được ko ạ

Lê Thành Công viết 19:32 ngày 01/10/2018

giải thuật thì mình hiểu rồi nhưng code thì vẫn chưa hình dung ra làm như thế nào. Mình có code thử vài lần theo cách của bạn trước khi hỏi trên này rồi nhưng lỗi. Bạn có thể code thử giúp mình được không ạ? Thực sự gặp bài này bí quá.

EternalRerosu viết 19:42 ngày 01/10/2018

	FILE *fp;
	
	fp = fopen("file.txt", "r");

	char arr_2d[100][100];

	int index = 0;

	while (!feof(fp))
	{
		char buff[255];

		fgets(buff, 255, fp); // get line

		for (int i = 0; i < strlen(buff) - 1; i++) { 
			arr_2d[index][i] = buff[i];
		}
		index++;
	}

rogp10 viết 19:47 ngày 01/10/2018

Phân tích từ điển thì nên đổ vào tree

fgets(buff, 255, fp);

Dữ liệu có thể sẽ không sạch

A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to *str.

Le Thien Hoang viết 19:44 ngày 01/10/2018

Thầy HảiLT sẽ không chấp nhận phương pháp cho vào mảng 2 chiều đâu,3 chiều đi em

Lê Thành Công viết 19:43 ngày 01/10/2018

Sao anh biết em học HảiLT thế??

Le Thien Hoang viết 19:43 ngày 01/10/2018

Con Thanh Thanh em gái anh thích em.Nó học cùng lớp em đấy em không biết gì à?

Bài liên quan
0