আপনি যদি আপনার ফাইলটি নাল বাইটের সাহায্যে প্যাডিং করছেন তবে আমার ধারণা হ'ল আপনি একটি char *
সি-তে ফাইলটি চালাচ্ছেন যদি এটি হয় তবে আপনার কেবল ফাইলটি নাল বাইট দিয়ে প্যাড করার প্রয়োজন হবে না, কেবল শেষে নাল বাইট যুক্ত করুন ফাইলটি এবং তারপরে এলোমেলো বাইট সহ প্যাডিং যথেষ্ট হতে পারে। এই ক্ষেত্রে, সি প্রোগ্রাম বেলো খুব দক্ষ হবে (কেবলমাত্র ২ য় প্যারামিটারের চেয়ে ছোট ফাইলগুলিতে ব্যবহার করা হবে, অন্যথায় ডেটা ওভাররাইট করা হবে)। এটি এমনকি আপনি যা করতে চান তা করতে পারে (নাল বাইট সহ প্যাডিং) lseek
ফাংশন সংজ্ঞাতে বলা হয়েছে যে:
Lseek () ফাংশনটি ফাইলটিতে অফসেটটিকে ফাইলের বিদ্যমান ডেটার শেষের বাইরে সেট করার অনুমতি দেয়। যদি পরবর্তী সময়ে এই স্থানে ডেটা লেখা হয় তবে ফাঁক থাকা তথ্যগুলির পরবর্তী পাঠগুলি 0 মান সহ বাইটগুলি ফিরে আসবে যতক্ষণ না তথ্যটি ফাঁকে ফাঁকে লেখা হয়।
এই ক্ষেত্রে, 1 ম কল lseek
এবং write
এটিকে সরানো যেতে পারে। তবে পরীক্ষাগুলি আপনার সিস্টেমে প্রথম হওয়া উচিত ...
#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;
}