این مقاله از «دیدیر ورنا» میباشد که توسط من به فارسی ترجمه شده است.اگر اشتباهی تایپی یا علمی یا املایی مشاهده کردید حتما به مترجم گزارش دهید.
این مقاله از «دیدیر ورنا» میباشد که توسط من به فارسی ترجمه شده است.اگر اشتباهی تایپی یا علمی یا املایی مشاهده کردید حتما به مترجم گزارش دهید.
تابع qsort از کتابخانهی استاندارد(stdlib.h) از توابع مفید و البته استاندارد هست.این تابع با دادن آدرس آرایه، تعداد اعضا، اندازهی هر عضو و یک تابع برای مقایسهی دو عضو،آرایه را بصورت صعودی مرتب میکند.
با اینکه این تابع استاندارد هست اما اجباری در پیادهسازی آن نیست، به این معنی که qsort ضرورتا همهجا(منظور از همه جا دقیقا همهجاست! این یعنی ابررایانهها،فبلتها،رایانههای شخصی و همچنین میکروکنترلرها مانند AVR و PIC را نیز حساب میکنیم) وجود ندارد.
void qsort(void *base, size_t nmemb, size_t size, int (*compar(const void *, const void *)))
اندی پیش به این فکر میکردم که چطور میتوانم حجم یک پرونده را بدست بیاورم و زیر کاپوت این توابع چه چیزی پنهان است.
برای بدست آوردن حجم یک پرونده، البته بدون توجه به فایلسیستم و سیستمعامل میتوانیم به این صورت عمل کنیم: اول پرونده را باز میکنیم، سپس اشارهگر پرونده را به آخرین بایت آن انتقال میدهیم(معمولا تابعی به اسم seek یا مشابه وجود دارد)، حالا مکان اشارهگر را نسبت به اول پرونده بدست میآوریم(معمولا تابعی به اسم tell وجود دارد). حجم پرونده را به بایت بدست آوردهایم.
این تکه کد ساده یک مشاهده گر ساده هست که تک تک بایت های فایل را داخل مبنای شانزده(Hex) نمایش میده.
// hexview.c // Author: FarooqKZ // It's free software under GPL3+ and comes WITHOUT ANY WARRENTY FROM MAIN AUTHOR #include <stdio.h> int main(int argc, char *argv[]){ if (argc == 1 || !strcmp(argv[1], "-h")){ printf("Usage: hexview file_path\n"); return 0; } FILE *fs = fopen(argv[1], "r"); long byte_number = 0; while(1){ if ((++byte_number % 26) == 0) // goes to new line each 26 bytes printf("\n"); // you may remove this part and then use fold to split it into lines int t = getc(fs); if (t == EOF) break; printf("%.2X ", t); } printf("\n"); return 0; }
این پست در حال بروز رسانی است.
رشته ها(Strings) مجموعه ای از کاراکتر ها هستند که برای نمایش پیغام ها، ذخیره اسامی و ... کاربرد دارند. این آموزش را میتوان در سی پلاس پلاس نیز استفاده کرد.
در زبان سی بر خلاف بسیاری از زبان ها برای حفظ سادگی زبان، نوع داده ای مبنایی برای ذخیره رشته ها وجود ندارد. در نتیجه شما باید رشته ها را بصورت آرایه ای از کاراکتر ها معرفی کنید.
یک کاراکتر در زبان سی به این صورت تعریف میشود:
char ch = 'A';