آموزش ساختن Index به زبان C

آبجی

عضو جدید
کاربر ممتاز
خب می خوایم شروع کنیم به نوشتن یه برنامه، اصلا هم به این دلیل نیست که پروژه داریم و این حرفا
این برنامه ما چند کار باید انجام بده که هر کدوم رو جداگانه توضیح می دم:
1- از کاربر اطلاعات رو بگیره و توی یه فایل بنویسه
2- ساختار index این اطلاعات رو بسازه و در صورت اضافه کردن اطلاعات اونو به روز رسانی کنه
3- با استفاده از ‏index که ساخته در اطلاعات جستجو کنه و مقدار مورد نظر رو نمایش بده
4- ساختار index رو در یه فایل ذخیره کنه و موقع شروع برنامه اونو بخونه و وارد حافظه کنه



اول می ریم سراغ گرفتن اطلاعات از کاربر: از اون جایی که می خوایم یه ساختار داده ای تعریف کنیم باید بریم سراغ Struct معروف خودمون و مقادیر دلخواه رو توش تعریف می کنیم. مثلا یه مثال ساده برای اطلاعات دانشجو می تونه این باشه:
PHP:
struct student{
    int studentNum;
    char name[30];
}student[1200];

برای راحتی کار همون جا بعد از تعریف ‏struct یه آرایه از اون تعریف می کنیم تا اطلاعات رو داخلش بذاریم. بعد باید با استفاده از یه حلقه مثل for یا while و دستور scanf اطلاعات رو از کاربر می گیریم. این جا به خودمون بستگی داره که با کدوم حلقه کار کنیم مثلا while رو انتخاب می کنیم:

PHP:
while (1){
    printf ("\nStudent number? ");
    scanf ("%d", &student[counter].studentNum);
    if (student[counter].studentNum==0)
        break;
    printf ("\nStudent name? ");
    scanf ("%s", student[counter].name);
    counter++;
}


به این ترتیب شماره دانشجویی رو اول از کاربر سوال می کنیم تا زمانی که صفر نباشه عملیات خوندن رو انجام می دیم و وقتی صفر شد از حلقه خارج میشیم.

تا این جا اطلاعات رو گرفتیم و در یک آرایه ذخیره کردیم. حالا باید عملیات نوشتن روی فایل رو انجام بدیم. برای این کار اول باید فایل مورد نظر رو با استفاده از ‏fopen باز کنیم. برای fopen چند تا انتخاب وجود داره. “r” برای خوندن از فایل “w” برای نوشتن در فایل یا در واقع بازنویسی اون و “a” برای اضافه کردن به فایل که ما چون می خوایم موقع اضافه کردن اطلاعات، اطلاعات قبلی از فایل پاک نشن از “a” برای باز کردن استفاده می کنیم. نام فایل مورد نظر هم باید مشخص کنیم:

PHP:
FILE *fPointer

fPointer=fopen ("info.txt", "a");

اشاره گر FILE رو معمولا در اول برنامه تعریف می کنیم که در این جا اسمشو fPointer گذاشتیم.
 

آبجی

عضو جدید
کاربر ممتاز
حالا باید اطلاعات نوشته شده در آرایه رو در فایل بنویسیم. برای این کار از چند دستور مثل fwrite یا fprintf میشه استفاده کرد که ما فعلا از همین fwrite استفاده می کنیم. ساختار دستور fwrite به صورت زیر هست:

PHP:
fwrite (Buffer, Size, Count, Stream)
که در اون ‏Buffer جایی هست که می خوایم از اون اطلاعات خونده بشه که تو این جا چون اطلاعات در آرایه student قرار داره همون رو به جای بافر قرار میدیم. Size اندازه متغیری هست که نوشته می شه، که چون در این جا ما از struct استفاده کردیم اندازه هر متغیر یا درایه آرایه مون به اندازه همون struct student هست که می تونیم از تابع ()sizeof برای تبدیل اون استفاده کنیم. Count تعداد متغیر هایی که باید نوشته بشه مشخص می کنه که همون تعداد دانشجو هایی هست که ما از کاربر دریافت کردیم. اگه دقت کرده باشید در هنگام دریافت هر مقدار به متغیر counter یه واحد اضافه میشد پس مقدار این متغیر می تونه همون تعداد عناصری باشه که باید نوشته بشه. در آخر هم Stream قرار داره که همون اشاره گر فایل هست که باید در اول برنامه تعریف کنیم.
در آخر پس از انجام این توضیحات شکل تابع fwrite ما باید شبیه زیر بشه:+

PHP:
fwrite (student, sizeof(struct student), (size_t) counter, fPointer);
fclose(fPointer);

در ضمن پس از اتمام کار با فایل، فایل رو با ()fclose می بندیم.

تابع fwrite تعداد رکورد هایی که با موفقیت نوشته میشه بازگشت (return) می کنه. از این خاصیت می تونیم برای بررسی خطا در نوشتن داده استفاده کنیم. اگه تعداد رکورد های نوشته شده با تعدادی که ما می خواستیم بنویسیم یکی نبود پس مشکلی پیش اومده. (البته اختیاری هست)

PHP:
int check;


fPointer=fopen ("info.txt", "a");
check=fwrite (student, sizeof(struct student), (size_t) counter, fPointer);
fclose (fPointer);
    
if (check==counter)
    printf ("\n%d records have been written successfully.", check);
else
    printf ("\nError");
 

ziadziad

عضو جدید
با سلام من برنامه می خواستم به زبان c ولی تایپیک آموزش c ندیدم اگر کمکم کنید ممنون می شوم.
برنامه ای بنویسید که 1) فایلی را تشکیل دهد 2) چند رکورد بنویسد 3) یک رکورد به خصوص را آبدیت کند 4) بعضی رکورد ها را چاپ کند 5) رکورد یک فایل را به طور وارون در یک فایل بنویسد ؟
ممنون میشم کمکم کنید آخه من استادم مهرزاد از دانشگاه کرج است که دانشجویانشو اذیت میکند . کممممممممممکممممم کنید؟
 

computer_soft

اخراجی موقت
با سلام من برنامه می خواستم به زبان c ولی تایپیک آموزش c ندیدم اگر کمکم کنید ممنون می شوم.
برنامه ای بنویسید که 1) فایلی را تشکیل دهد 2) چند رکورد بنویسد 3) یک رکورد به خصوص را آبدیت کند 4) بعضی رکورد ها را چاپ کند 5) رکورد یک فایل را به طور وارون در یک فایل بنویسد ؟
ممنون میشم کمکم کنید آخه من استادم مهرزاد از دانشگاه کرج است که دانشجویانشو اذیت میکند . کممممممممممکممممم کنید؟

دانلود یک کتاب Cیا C++ خیلی میتواند بهتان کمک کند.
به طور کامل در آن کتاب توضیح داده شده است. حتی نمونه سوال مربوطه هم هست
کتاب C جعفر نژاد قومی
 

Similar threads

بالا