Nếu bạn muốn cắt file để kích cỡ bằng không, bạn có thể fopen
với "w"
cờ:
FILE *fh = fopen("file.txt","w");
if (fh != NULL) fclose(fh);
Đối với cắt bỏ đến một kích thước cụ thể trong tiêu chuẩn C, bạn có thể làm điều này với giải pháp chuyển/đổi tên, chẳng hạn như:
FILE *finp = fopen ("inp.txt", "rb"); // should check for NULLs
FILE *fout = fopen ("out.txt", "wb");
size_t sz = 100000; // 100,000 bytes
char *buff = malloc (sz); // should check for NULL
sz = fread (buff, 1, sz, fin); // should check for errors
fwrite (buff, 1, sz, fout);
free (buff);
fclose (fin);
fclose (fout);
rename ("out.txt", "inp.txt); // should check for error
Tất nhiên, nếu bạn có quyền truy cập vào tiêu đề và thư mục Win32 Ries (và tôi tin rằng MinGW cung cấp cho bạn điều này), bạn có thể sử dụng SetEndOfFile()
, vì nó thực hiện tại chỗ, thay vì phải tạo một tệp mới và sau đó đổi tên nó.
Điều đó có nghĩa là sử dụng tệp dựa trên xử lý Windows I/O thay vì C FILE*
dựa trên nhưng, nếu bạn đang giới hạn bản thân với Windows, điều đó có thể không quan trọng. Nếu bạn muốn tính di động, mặt khác, bạn sẽ cần một giải pháp dựa trên tiêu chuẩn C, chẳng hạn như giải pháp chuyển/đổi tên ở trên.
Bạn có nghĩa là cắt ngắn tại một vị trí cụ thể hoặc cắt ngắn thành tệp trống không? – paxdiablo
có thể ** trùng lặp ** của ** [Cách cắt ngắn một tệp trong C?] (Http://stackoverflow.com/a/873653/2432317) ** –