Nếu tôi sử dụng một cái gì đó như double
để giữ kích thước tệp theo byte, điều này sẽ tự động thất bại rất sớm, vậy tôi sẽ sử dụng loại dữ liệu nào? Ngày nay một vài bệnh lao là phổ biến, vì vậy tôi muốn kiểu dữ liệu có thể chứa một số lượng lớn.C: Loại dữ liệu phù hợp để sử dụng cho kích thước tệp theo byte là gì?
Trả lời
Nó sẽ tùy thuộc vào nền tảng của bạn. Trên hệ thống Unix, bạn có thể sử dụng loại off_t
. Trên Windows, có thể bạn sẽ muốn sử dụng LARGE_INTEGER
. Đó là các loại được sử dụng trên các hệ thống đó bởi hàm trả về kích thước tệp (stat
trên Unix, GetFileSize
trên Windows).
Nếu bạn muốn loại di động, uint64_t
phải đủ lớn.
Sau phiên Google nhanh, có vẻ như uint64_t là thứ tôi muốn. Cảm ơn! Tôi bị choáng ngợp bởi số lượng phản hồi và thời gian phản hồi. SO là tuyệt vời! – EnibMoc1994
@ EnibMoc1994: Bạn cũng có thể sử dụng 'long long' hoặc đối tác chưa ký của nó, được đảm bảo ít nhất 64 bit. – caf
long long
là một Pop yêu thích :)
size_t là thông thường cho kích thước file trong C, nhưng kiểu của nó là nền tảng phụ thuộc (32-bit hoặc 64-bit unsigned int trên Windows). Tôi muốn đề nghị __int64 (một int 64-bit) - nên đối phó với lên đến 138,547,332 terrabyte.
CHỈNH SỬA: Chỉ cần kiểm tra, lệnh gọi API Windows GetFileSizeEx
giúp bạn có LARGE_INTEGER, là số nguyên có ký hiệu 64 bit. Vì vậy LARGE_INTEGER cũng sẽ là một điều tốt.
Đối với bản ghi, 'size_t' có kích thước 64 bit trong bản 64bit. –
Nó là _not_ một 'unsigned int', nó là một loại tích phân không dấu. – paxdiablo
Xin lỗi, @paxdiablo, nó thực sự phụ thuộc vào nền tảng như bạn ngụ ý. Trên Windows sử dụng 32-bit, nó tương đương với một int không dấu. Thời gian qua tôi tin tưởng những gì Visual Studio nói với tôi. :) Đã chỉnh sửa câu trả lời của tôi chính xác hơn. Thông tin thêm ở đây: http://en.wikipedia.org/wiki/Size_t –
Có chức năng được gọi là ftello()
trả về số off_t
.
Với fgetpos()
, bạn cần biến số fpos_t
- CHỈNH SỬA: không nhất thiết phải là loại số học.
Vì vậy, off_t
có thể/nên phù hợp để phù hợp với nhu cầu của bạn và giúp bạn không phụ thuộc vào kích thước loại dữ liệu thực tế.
Chỉ cần cẩn thận rằng 'ftello' và' off_t' là Posix, không chuẩn C. –
Nếu bạn không có 'off_t' bạn không có' ftello' hoặc là và không có (di động) cách để có được một tập tin bù đắp lớn hơn hơn 'long' ... –
libc stat
sử dụng off_t
, là typedef cho loại rộng, không dấu 64 bit. Điều đó sẽ phù hợp trong một thời gian ngắn.
off_t là typedef cho chữ ký dài lâu trên OS X. –
- 1. Kích thước hợp lý cho ứng dụng iPhone là gì?
- 2. Hadoop MapReduce: Kích thước tệp đầu vào phù hợp?
- 3. loại dữ liệu phù hợp cho khóa duy nhất trong DB postgresql là gì?
- 4. Loại dữ liệu tốt nhất để sử dụng cho tiền trong C# là gì?
- 5. Kích thước của kiểu dữ liệu sử dụng NumPy
- 6. Kích thước tốt (tính bằng byte) cho tệp nhật ký là gì?
- 7. sử dụng java.util.Scanner để đọc byte tệp theo byte
- 8. Thực tiễn tốt nhất cho kích thước trường dữ liệu chuỗi là gì?
- 9. Loại dữ liệu tốt nhất để sử dụng cho tiền trong ứng dụng Java là gì?
- 10. cách tốt nhất để có kích thước tệp là gì?
- 11. Loại MIME chính xác để sử dụng cho nguồn cấp dữ liệu RSS là gì?
- 12. kích thước bộ đệm thích hợp cho chức năng 'ghi' là gì?
- 13. Kích thước khối của hệ thống tệp iphone là gì?
- 14. gitignore theo kích thước tệp?
- 15. Kích thước bộ đệm để tạo tệp nén .zip bằng Java là gì?
- 16. Giảm kích thước là gì?
- 17. Bạn quyết định kích thước byte [] nào để sử dụng cho InputStream.read()?
- 18. Đo kích thước chuỗi theo Byte trong php
- 19. Kích thước varchar tối ưu cho MySQL là gì?
- 20. Loại dữ liệu chính xác mà tôi nên sử dụng trong trường hợp này là gì?
- 21. Kích thước cột cơ sở dữ liệu được đề xuất cho tên là gì?
- 22. Kích thước của cấu trúc C# này là gì?
- 23. serializing dữ liệu sử dụng giới hạn kích thước json.net?
- 24. Loại dữ liệu cho unix_timestamp (MySQL) là gì?
- 25. Kích thước tối đa cho các thư SockJS là gì?
- 26. Kích thước tối đa của siêu dữ liệu JPEG là gì?
- 27. Kích thước tối ưu cho ứng dụng Android là gì?
- 28. Loại dữ liệu uintptr_t là gì
- 29. Loại dữ liệu 'ngắn' trong C là gì?
- 30. Lưu trữ kích thước tệp trong cơ sở dữ liệu
+1 để làm phiền hỏi thay vì chỉ sử dụng một cái gì đó không có thật. :-) Và chào mừng bạn đến với SO! –