Có thể viết toàn bộ một struct vào một tập tinViết Struct vào một tập tin trong c
dụ:
struct date {
char day[80];
int month;
int year;
};
Có thể viết toàn bộ một struct vào một tập tinViết Struct vào một tập tin trong c
dụ:
struct date {
char day[80];
int month;
int year;
};
Có thể viết toàn bộ một struct vào một tập tin
Câu hỏi của bạn thực sự là viết các cá thể struct vào tệp.
fwrite
để đạt được điều này.sizeof
mỗi đối tượng trong đối số thứ haibinary mode
.Cẩn thận với độ tin cậy khi bạn đang viết/đọc trong các hệ thống cuối nhỏ và đọc/ghi trong hệ thống cuối lớn và ngược lại. Đọc how-to-write-endian-agnostic-c-c-code
struct date *object=malloc(sizeof(struct date));
strcpy(object->day,"Good day");
object->month=6;
object->year=2013;
FILE * file= fopen("output", "wb");
if (file != NULL) {
fwrite(object, sizeof(struct date), 1, file);
fclose(file);
}
Bạn có thể đọc chúng trong cùng một cách .... sử dụng fread
struct date *object2=malloc(sizeof(struct date));
FILE * file= fopen("output", "rb");
if (file != NULL) {
fread(object2, sizeof(struct date), 1, file);
fclose(file);
}
printf("%s/%d/%d\n",object2->day,object2->month,object2->year);
ông cũng nên cẩn thận với cấu trúc đệm ít nhất –
tôi cũng đã viết một số đối tượng C trong tệp và muốn đọc chúng lại và xử lý chúng. Nhưng, tôi không biết những đối tượng đã được ghi vào tập tin, nó có thể là bất kỳ, vì vậy, trong fread, tôi sẽ không biết sizeof() của đối tượng tôi đã được đọc. Ngoài ra, làm thế nào để đọc chính xác một objct tại một thời điểm? Làm thế nào fread có thể biết rằng bắt đầu và kết thúc của byte trong một tập tin đại diện cho ranh giới đối tượng? –
Tôi đoán, nếu đó là trường hợp cần có cấu trúc cho tệp, ví dụ: giả sử bạn viết loại trong một dòng và đối tượng trong một dòng khác, v.v. sau đó từ chương trình dựa trên loại bạn có thể biết kích thước.. – pinkpanther
có ................. –
Đọc điều này cũng: [làm thế nào để viết struct trong một tập tin trong c] (http://www.codingunit.com/c-tutorial-binary-file-io) –