2013-09-03 49 views
7

Tôi có một ma trận 2 chiều:Làm thế nào để viết một mảng nộp trong C

char clientdata[12][128]; 

cách tốt nhất để viết nội dung vào một tập tin là gì? Tôi cần phải liên tục cập nhật tập tin văn bản này, do đó, mỗi lần ghi dữ liệu trước đó trong tập tin sẽ bị xóa.

+3

Đây có phải là tệp văn bản có thể đọc được không? – dasblinkenlight

+0

Số liệu có phải là số liệu không? Dây? Những gì đang xảy ra ở đây? Bạn có thể hiển thị ví dụ về dữ liệu và những gì bạn muốn tệp trông giống như không? –

+0

Bản sao của: http://stackoverflow.com/questions/4638568/write-2d-array-to-a-file-in-c – sara

Trả lời

24

Kể từ khi kích thước của dữ liệu được cố định, một trong những cách đơn giản để viết toàn bộ mảng này vào một tập tin được sử dụng chế độ văn bản nhị phân:

FILE *f = fopen("client.data", "wb"); 
fwrite(clientdata, sizeof(char), sizeof(clientdata), f); 
fclose(f); 

này viết ra toàn bộ mảng 2D cùng một lúc, viết trên nội dung của tệp đã có ở đó trước đó.

+0

làm cách nào để đọc tệp khách hàng từ tệp sau khi viết? – mugetsu

+2

Bạn sử dụng 'FILE * ifp = fopen (" client.data "," rb "); fread (clientdata, sizeof (char), sizeof (clientdata), ifp); 'và thêm kiểm tra lỗi. –

+4

Điều này hoạt động trên các loại máy vì dữ liệu là dữ liệu ký tự. Nếu nó là 'int', thì dữ liệu sẽ không thể di chuyển giữa các máy lớn và cuối nhỏ. –

0

Tôi muốn thêm một thử nghiệm để làm cho nó mạnh mẽ! Hàm fclose() được thực hiện trong cả hai trường hợp, nếu không hệ thống tệp sẽ giải phóng bộ mô tả tệp

int written = 0; 
FILE *f = fopen("client.data", "wb"); 
written = fwrite(clientdata, sizeof(char), sizeof(clientdata), f); 
if (written == 0) { 
    printf("Error during writing to file !"); 
} 
fclose(f); 
Các vấn đề liên quan