आप शून्य आकार के लिए फ़ाइल को काटना चाहते हैं, आप fopen
"w"
ध्वज के साथ कर सकते हैं:
FILE *fh = fopen("file.txt","w");
if (fh != NULL) fclose(fh);
मानक सी में विशिष्ट आकार को छोटा करने के लिए, तो आप इस के साथ कर सकते एक स्थानांतरण/नामकरण समाधान, जैसे कुछ:
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
बेशक, यदि आपके पास Win32 शीर्षलेख और libra तक पहुंच है ries (और मेरा मानना है कि मिनजीडब्ल्यू आपको यह देता है), आप SetEndOfFile()
का उपयोग कर सकते हैं, क्योंकि यह एक नई फ़ाइल बनाने के बजाय इसे स्थान पर रखता है और फिर इसका नाम बदलता है।
इसका मतलब है कि-आधारित के बजाय विंडोज हैंडल-आधारित फ़ाइल I/O का उपयोग करना है, लेकिन यदि आप स्वयं को विंडोज़ में सीमित कर रहे हैं, तो इससे कोई फर्क नहीं पड़ता। यदि आप दूसरी ओर पोर्टेबिलिटी चाहते हैं, तो आपको मानक सी के आधार पर समाधान की आवश्यकता होगी, जैसे उपरोक्त स्थानांतरण/नामकरण समाधान।
क्या आपका मतलब किसी विशिष्ट स्थिति पर छंटनी या खाली फ़ाइल में छंटनी करना था? – paxdiablo
संभव ** ** ** का डुप्लिकेट ** [सी में फ़ाइल को कैसे छीनना है?] (Http://stackoverflow.com/a/873653/2432317) ** –