در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش برنامه نویسی C قسمت 21 : readdir & opendir functions

سلام و وقت بخیر. در این قسمت در مورد دو تابع readdir و opendir صحبت میکنیم. از این 2 تابع برای باز کردن و خواندن محتویات directory ها استفاده میکنیم. به مثال زیر توجه کنید. اضافه کردن header ها فراموش نشود.

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
int main ()
{
DIR *dir;
struct dirent *sd;
dir = opendir("/root");
if (dir == NULL)
	{	printf("unable to open directory. \n");
		exit(1);
	}
while( (sd = readdir(dir)) != NULL )
{
	printf(">> %s \n", sd-> d_name);
}
closedir(dir);
return 0;
}

یک اشاره گر از جنس directory درست میکنیم. یک struct هم درست کردیم. کلمه dirent یک کلمه کلیدی است. برای متوجه شدن man readdir را ببینید. یک مسیر دلخواه را با opendir باز کردیم و درون dir میریزیم. با readdir محتویات dir را میخوانیم و درون sd میریزیم. توجه کنید که sd یک struct است و تمام عناصر آن مقدار میگیرند. این struct برای همین کار ساخته شده است. در تابع printf هم گفتیم که از sd قسمت dname را چاپ کنید. این که dnmae رو از کجا آوردم توی man readdir نوشته برای دسترسی به نام ها از این استفاده کنید. ابتدا man readdir و سپس خروجی برنامه را در تصویر میبینید. در آخر برنامه فراموش نکنید که مسیر را close کنید.

On Linux, the dirent structure is defined as follows:

           struct dirent {
               ino_t          d_ino;       /* inode number */
               off_t          d_off;       /* offset to the next dirent */
               unsigned short d_reclen;    /* length of this record */
               unsigned char  d_type;      /* type of file; not supported
                                              by all file system types */
               char           d_name[256]; /* filename */
           };

خروجی برنامه :

>> .config 
>> .dbus 
>> .lftp 
>> .bash_logout 
>> .viminfo 
>> Music 
>> anaconda-ks.cfg 
>> vm 
>> .lesshst 
>> .pulse-cookie 
>> IFS 
>> .local 
>> .recently-used.xbel 
>> .mozilla 
>> a 
>> d 
>> Pictures 
>> .cache 
>> .bash_profile 
>> .icons 
>> Templates 
>> Downloads 
>> .bash_history 
>> proje.sh 
>> post-install.log 
>> test 
>> .esd_auth 
>> Public 
>> VMwareTools-10.0.6-3595377.tar.gz 
>> Desktop 
>> .tcshrc 
>> .cshrc 
>> .gconfd 
>> .. 
>> . 
>> .spice-vdagent 
>> .pki 
>> .thumbnails 
>> .gnome2_private 
>> .themes 
>> b 
>> .gnome2 
>> nohup.out 
>> c 
>> .gtk-bookmarks 
>> .ICEauthority 
>> Documents 
>> Videos 
>> sfk 
>> post-install 
>> .gvfs 
>> temp 
>> .gconf 
>> .bashrc 
>> .pulse 
>> .nautilus 

حالا مثلا inode تک تک فایل ها رو میخوام:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
int main ()
{
DIR *dir;
struct dirent *sd;
dir = opendir("/root");
if (dir == NULL)
	{	printf("unable to open directory. \n");
		exit(1);
	}
while( (sd = readdir(dir)) != NULL )
{
	printf("%s\t", sd-> d_name);
	printf("%d\n", sd-> d_ino);
}
closedir(dir);
return 0;
}

خروجی:

.config	131249
.dbus	131155
.lftp	134496
.bash_logout	1440
.viminfo	4558
Music	131243
anaconda-ks.cfg	75884
vm	131385
.lesshst	1997
.pulse-cookie	76039
IFS	4555
.local	131348
.recently-used.xbel	70853
.mozilla	131537
a	4556
d	37210
Pictures	131247
.cache	131485
.bash_profile	1441
.icons	131444
Templates	131208
Downloads	131170
.bash_history	76054
proje.sh	35333
post-install.log	22508
test	1747
.esd_auth	76052
Public	131222
VMwareTools-10.0.6-3595377.tar.gz	22501
Desktop	131169
.tcshrc	1444
.cshrc	1443
.gconfd	131088
..	2
.	8201
.spice-vdagent	131317
.pki	134695
.thumbnails	131445
.gnome2_private	131373
.themes	131443
b	69625
.gnome2	131218
nohup.out	36362
c	4548
.gtk-bookmarks	21545
.ICEauthority	76050
Documents	131231
Videos	131248
sfk	31761
post-install	22505
.gvfs	131334
temp	54246
.gconf	131086
.bashrc	1442
.pulse	131335
.nautilus	131382

پایان قسمت بیست و یکم

نویسنده : سید محمد باقر موسوی

منبع : جزیره برنامه نویسی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#برنامه_نویسی_به_زبان_c #نوشتن_shell_script_در_لینوکس #زبان_برنامه_نویسی_c_در_لینوکس #برنامه_نویسی_به_زبان_c_در_لینوکس #آموزش_گام_به_گام_برنامه_نویسی_c #برنامه_نویسی_c_در_linux #آموزش_برنامه_نویسی_c_در_لینوکس
عنوان
1 آموزش برنامه نویسی C قسمت 1 : نصب محیط برنامه نویسی رایگان
2 آموزش برنامه نویسی C قسمت 2 : Hello World رایگان
3 آموزش برنامه نویسی C قسمت 3 : Data Types رایگان
4 آموزش برنامه نویسی C قسمت 4 : Data Types رایگان
5 آموزش برنامه نویسی C قسمت 5 : اشاره گر ها رایگان
6 آموزش برنامه نویسی C قسمت 6 : آرایه ها رایگان
7 آموزش برنامه نویسی C قسمت 7 : ساختار شرط IF رایگان
8 آموزش برنامه نویسی C قسمت 8 : حلقه for رایگان
9 آموزش برنامه نویسی C قسمت 9 : حلقه While رایگان
10 آموزش برنامه نویسی C قسمت 10 : Struct رایگان
11 آموزش برنامه نویسی C قسمت 11 : تابع دریافت ورودی scanf رایگان
12 آموزش برنامه نویسی C قسمت 12 : فایل های متنی و باینری رایگان
13 آموزش برنامه نویسی C قسمت 13 : توابع رایگان
14 آموزش برنامه نویسی C قسمت 14 : توابع اشاره گر رایگان
15 آموزش برنامه نویسی C قسمت 15 : argc argv رایگان
16 آموزش برنامه نویسی C قسمت 16 : Multiple Source Files رایگان
17 آموزش برنامه نویسی C قسمت 17 : String Functions & Operations رایگان
18 آموزش برنامه نویسی C قسمت 18 : Char Pointers VS Array Char رایگان
19 آموزش برنامه نویسی C قسمت 19 : Binary & Unary Operations رایگان
20 آموزش برنامه نویسی C قسمت 20 : Type Casting رایگان
21 آموزش برنامه نویسی C قسمت 21 : readdir & opendir functions رایگان
22 آموزش برنامه نویسی C قسمت 22 : Fork Function رایگان
23 آموزش برنامه نویسی C قسمت 23 : Thread رایگان
24 آموزش برنامه نویسی C قسمت 24 : Switch Case Statement رایگان
25 آموزش برنامه نویسی C قسمت 25 : qsort رایگان
26 آموزش برنامه نویسی C قسمت 26 : Socket Programming رایگان
27 آموزش برنامه نویسی C قسمت 27 : لیست پیوندی (Linked List) رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....