यदि आप अपनी फ़ाइल को नल बाइट्स के साथ char *
रख रहे हैं, तो मेरा अनुमान है कि आप सी। में फ़ाइल में हेरफेर कर रहे हैं । यदि यह मामला है, तो आपको फ़ाइल को नल बाइट्स के साथ पैड करने की आवश्यकता नहीं हो सकती है, केवल अंत में एक शून्य बाइट जोड़कर। फ़ाइल और फिर इसे यादृच्छिक बाइट्स के साथ पैड करना पर्याप्त हो सकता है। इस स्थिति में, सी प्रोग्राम बलो बहुत कुशल होगा (केवल 2 डी पैरामीटर की तुलना में छोटी फ़ाइलों पर उपयोग किया जा सकता है, अन्यथा डेटा ओवरराइट किया जाएगा)। यह भी हो सकता है कि आप क्या चाहते हैं (नल बाइट्स के साथ पैडिंग) क्योंकि lseek
फ़ंक्शन परिभाषा बताती है कि:
Lseek () फ़ंक्शन फ़ाइल को मौजूदा डेटा के अंत से परे फ़ाइल को सेट करने की अनुमति देगा। यदि इस बिंदु पर डेटा बाद में लिखा गया है, तो अंतर में डेटा की बाद की रीडिंग 0 के साथ बाइट्स लौटाएगी, जब तक कि डेटा वास्तव में अंतर में नहीं लिखा जाता है।
इस मामले में, 1 से कॉल lseek
और write
हटाया जा सकता है। लेकिन परीक्षण आपके सिस्टम 1 पर किया जाना चाहिए ...
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
/* 1st parameter: a file name, 2nd parameter: a file size. */
int main(int argc, char ** args) {
int nfd = open(args[1], O_WRONLY);
lseek(nfd, 0, SEEK_END);
write(nfd, "\0", 1);
lseek(nfd, atoi(args[2]) - 1, SEEK_SET);
write(nfd, "\0", 1);
close(nfd);
return 0;
}