PDA

View Full Version : سوال: گرفتن لیست فایلها و فولدرها



mostafa-bep
دوشنبه 16 دی 1387, 22:22 عصر
با سلام خدمت کاربران گرامی برنامه نویس
پروژه پایان ترم ما خط فرمان ویندوز(command prompt) است.
من میخام لیست فایلها و فولدر ها رو بگیرم. (dir) و باید فقط از کتابخانه های استاندارد استفاده کنم. من قبلا با dirent.h این کار رو کردم. ولی فهمیدم این کتابخانه استاندارد نیست و نباید از آن استفاده کنم.
لطفا مرا راهنمایی کنید.
با تشکر

mostafa-bep
چهارشنبه 18 دی 1387, 00:45 صبح
کسی نیست که منو کمک کنه؟

ehsan_882000
دوشنبه 23 دی 1387, 02:12 صبح
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void dir_list() ;
void main()
{
clrscr();
dir_list();
getch();
}
/////////////
void dir_list()
{
union regs in, out;
char pp[44] ;
bdosptr(0x1a, pp,0);
bdosptr(0x4e,"*.*",0);
printf("\n %s \n",&pp[30]);
for(;;) {
if(bdos(0x4f,0,0)==18)
breake;
printf("\n %s \n", &pp[30]);
}//end of for
}

mostafa-bep
سه شنبه 24 دی 1387, 13:29 عصر
اين كه كار نكرد:

1>c:\documents and settings\vafi\my documents\visual studio 2008\projects\cmd\cmd\d.cpp(14) : error C2079: 'in' uses undefined union 'dir_list::regs'
1>c:\documents and settings\vafi\my documents\visual studio 2008\projects\cmd\cmd\d.cpp(14) : error C2079: 'out' uses undefined union 'dir_list::regs'
1>c:\documents and settings\vafi\my documents\visual studio 2008\projects\cmd\cmd\d.cpp(16) : error C3861: 'bdosptr': identifier not found
1>c:\documents and settings\vafi\my documents\visual studio 2008\projects\cmd\cmd\d.cpp(17) : error C3861: 'bdosptr': identifier not found
1>c:\documents and settings\vafi\my documents\visual studio 2008\projects\cmd\cmd\d.cpp(20) : error C3861: 'bdos': identifier not found
1>c:\documents and settings\vafi\my documents\visual studio 2008\projects\cmd\cmd\d.cpp(21) : error C2065: 'breake' : undeclared identifier
1>Build log was saved at "file://c:\Documents and Settings\vafi\My Documents\Visual Studio 2008\Projects\cmd\cmd\Debug\BuildLog.htm"
1>cmd - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Nima_NF
سه شنبه 24 دی 1387, 15:19 عصر
نمونه کدی که در بالا برایتان گذاشتند برای کامپایلرهای 15 سال قبل هست ( DOS )

چیزی که برای من عجیب هست کاربری دقیقا همین سوال را از طریق پیام خصوص پرسید!
و جواب من:
بهترین راه برای کار با فولدر ها و جستجو فایل ها و غیره استفاده از توابع مدیریت فایل آن سیستم عامل است.
مثلا در ویندوز از FindFirstFile ، FindNextFile و ... در هدر فایل windows.h (از طریق سایت مایکرسافت و MSDN این توابع را جستجو کنید)
در لینوکس نیز توابعی به همین شکل هست. (و البته دستورات command line هم هست که با دستور system می توان اجرا کرد)

به صورت استاندارد چنین امکانی نداریم که در همه سیستم ها یکی باشد، مثلا همین direct.h یکی از نمونه هایی هست که در همه سیستم عامل ها هست، اما استاندارد C نیست و POSIX هست (به نوعی نیمه استاندارد) و باید به قوانین دانلود آن هم توجه کنید (GPL یا ...)