01/10/2018, 08:20

Đọc dữ liệu từ file vào struct

em có 1 file như thế này
3 // số câu hỏi
TF 5 // loại câu hỏi TF(True/false), MC (multiple choice), SA (short answer) và số điểm của câu hỏi
There exist birds that can not fly. (true/false) // câu hỏi
true // đáp án câu hỏi
MC 10
Who was the president of the USA in 1991?
6
Richard Nixon
Gerald Ford
Jimmy Carter
Ronald Reagan
George Bush Sr.
Bill Clinton
E
SA 20
What city hosted the 2004 Summer Olympics?
Athens

em có tạo 1 struct Data{
char TypeOfQues[3];
int mark;
char DataQues[100];
char result[30];
};
các bác giúp em hàm đọc dữ liệu từ file trên vào struct với ạ. em cảm ơn!

Thược Nguyễn viết 10:35 ngày 01/10/2018

cứ đọc bình thường thôi là được mà, bạn có thể search từ khóa đọc file có cấu trúc thì sẽ có nhiều example

Tao Không Ngu. viết 10:23 ngày 01/10/2018

Hi Hoàng Cường.
Bạn đọc lại nội quy nhé. Câu hỏi kiểu hỏi bài, code hộ không được chấp nhận.

明玉 viết 10:31 ngày 01/10/2018

Cứ đọc từng dòng vào rồi check thôi.
Kết quả lần đọc dòng trước sẽ quyết định phương pháp đọc các dòng sau.
Còn đọc xong rồi, lưu vào đâu thì tùy bạn à, khi đã làm được Cấu trúc Dữ liệu phù hợp thì việc còn lại chỉ đơn giản như phép gán dữ liệu (=).
Gợi ý cho bạn một CTDL nhé (hướng về cấp phát động bộ nhớ):

struct Question
{
   int type; // dùng số (Enum chẳng hạn) để thể hiện loại câu hỏi
   int point; // số điểm
   char* problem; // câu hỏi, cấp phát động rồi lưu pointer vào đây
   int numberOfPossibleAnswer; // nếu là MC thì lưu số lượng các phương án vào đây
   char** possibleAnswers; // mảng lưu các phương án, các phần tử đều ở dạng char*
   int answer; // true là 1, false là không; hoặc ABCDE tương ứng là 0, 1, 2, 3, 4
   // đối với SA thì <<có thể>>:
   // cấp phát vùng bộ nhớ kiểu char, lưu answer là "Athens" chẳng hạn;
   // lấy pointer của nó (char*), ép kiểu sang (int) rồi gán vào member answer;
   // sau này, nếu bạn thấy type là SA, thì bạn lấy "Athens" ra bằng cách:
   //    char* rs = (char*)answer;
}
struct Test
{
   int numberOfProblem;
   Question* questions; // cấp phát động một mảng Question vào đây, độ dài là số lượng câu hỏi
}

Nếu muốn lưu Tiếng Việt, bạn dùng wchar_t thay cho char.

Hoàng Cường viết 10:32 ngày 01/10/2018

thanks bạn nhé. hi. mình mới học cơ bản C nên có mấy phần về FILE, struct chưa được rõ. bài này mình code xong 2 hôm rồi.Mình post lên nhờ bạn và mọi người có thời gian thì đánh giá chỉ giáo giúp ạ.Link File

Bài liên quan
0