PDA

نسخه کامل مشاهده نسخه کامل : ايجاد فايل در سي++؟



rouhallah
05-11-2006, 20:14
بنام خدا
با سلام
سوالي داشتم در مورد اينكه چگونه ميشود درون يك حلقه دستور ايجاد فايل گذاشت و تا هنگامي كه شرط حلقه اجازه ميده به تعداد فايلهاي ايجاد شده اضافه بشه
من تكه برنامه زير دستور ايجاد فايل را درون حلقه گذاشتم اما فقط يك فايل ايجاد ميشه علتش هم احتمالاَ به خاطر هم نام بودن فايلهاي بعدي هست كه شايد جايگزين هم ميشوند من اين تكه برنامه رو اجرا كردم و خطاي زمان اجرا هم ايجاد نشد
حال چطور ميتوان كاري كرد كه به صورت خودكار فايلهاي بعدي با نام هاي متفاوت ايجاد شوند؟
با تشكر لطفا راهنماييم كنيد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

someone
05-11-2006, 23:50
سلام.
براي كاري كه شما ميخوايد انجام بديد روش هاي ديگه اي هم وجود داره اما اين از همه ساده تر هست.
كافي شما از itoa_ استفاده كنيد كه كارش تبديل int به string هست.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اگه جايي نياز به توضيح داشت اطلاع بديد.

rouhallah
07-11-2006, 19:58
با سلام دوباره
فقط يه مشكلي دارم اونم اينكه اين تابه شما را يعني itoa_ كامپايلر نميشناسه و ميگه درستشو تايپ كنيد
براي همين من به help كامپايلر مراجعه كردم امانه خود اين تابع رو ديدم نه چيزي كه شبيه به اين نوشته شده باشه
پس اگر ممكنه در اين مورد كمكم كنيد
با عرض پوزش يه سوال ديگه هم داشتم كه ربطي ب اين سوال نداره
اونم اينكه اگه يه فايل اجرايي(exe) داشته باشيم و بخواهييم بدون اينكه دوباره از اول همه چيزو بنويسيم يه تكه برنامه رو به اون اضافه كنيم آيا ميشه
يعني تعيين كنيم كه ترجمه برنامه جديد روي يك فايل از قبل آماده انجام بشه؟

اگه زحمتي نيست يه سواله ديگه هم داشتم و اون اينكه چطوري ميشه مثل شما كه جوابم رو با برنامه اي كه پيشنهاد داديد
برنامه اي كه ميخوام مشكلش رو حل كنم و از شما بپرسم مثل شما مرتب ثبت بشه و به هم نريزه منظورم متني كه شما تو زمينه آبي نوشتيد
با تشكر

someone
08-11-2006, 00:13
سلام.
شما میتونید از itoa استفاده کنید.در کامپایلر های Borland به این شکل هست و "_" رو نداره.
اگه درست متوجه شده باشم شما میخواید کد خودتون رو به یک فایل exe اضافه کنید. اصطلاحا Append کنید.
کاری که Virus ها انجام میدن. اگه منظورتون این بود جوابتون مثبته.ولی اصلا کار راحتی نیست.باید با ساختار فایل exe آشنا باشید.توضیحش خیلی مفصله.
برای سوال سومتون هم باید اضافه کنم که کافیه کدتون رو Select کنید و بر روی آیکن “ # Code” کلیک کنید.

rouhallah
08-11-2006, 20:39
با سلام مجدد
دوست عزيز وقتي شما اون جواب قبلي رو به من داديد و من در جوابتون گفتم نتونستن تابعي با آن نام را پيدا كنم تو حرفاتون دقت كردم و ديدم استفاده از اين تابع در مورد كاري كه ميخوام واجب نيست
پس اومدم از همون آرايه ها استفاده كردم و نام فايلي كه ميخواستم ايجاد بشه رو در آرايه قراردادم
وبا اضافه كردن يك واحد به چيزي كه در هر عنصر آرايه قرار دارد در هر بار اجرا شدن حلقه اين طوري نامهاي متفاوت ايجاد كردم و برنامه هم كار كرد البته تو اين برنامه من فقط عنصر اول را تغيير دادم و عنصرهاي ديگه مقدار اسكي صفر دارند كه باعث ايجاد فايلهاي يك حرفي شد
حال من با توجه به جواب جديد شما از تابع معرفي شده نيز استفاده خواهم كرد
حال سوالي كه اين بار با عرض پوزش از شما دارم اينه كه اگه بخوام تو شرط اجراي حلقه به جاي يك متغير
اين شرط باشه كه اگر تو فلان مسير يا تو فلان پوشه فلان فايل وجود داشت حلقه اجرا بشه يا نشه
من خواستم از دستوري كه متغير فايل رو تو شرط قرار ميده استفاده كنم ولي ديدم همراه اين دستور تو مثالي كه براي راهنمايي خودم استفاده ميكنم دستور fopen بكار برده شده و اين دستور باعث ايجاد فايل ميشه
اما من ميخوام بررسي حضور يك فايل رو بدون ايجاد كردن آن انجام بدم
برنامه اي كه تا الان پيش بردم(هنوز) كامل نيست را در زير آوردم كه شك دارم شرط حلقه while چطور الان كار ميكنه چون تو اون مسير چه فايل ديگه اي داشته باشم چه نداشته باشم اجرا ميشه براي همين سوالم رو درمورد بررسي حضور فايل حتما جواب بديد.
اگه كمكم كنيد خيلي ممنون ميشم
يه سوال ديگه هم داشتم و اون معرفي مرجعي الكترونيكي براي به قول شما append كردن كد به فايل است اگه معرفي كنيد ممنون ميشم چون اين طوري وقت با ارزشتون هم كمتر گرفته ميشه .
راستي اومدم امتحان كنم مثل شما كدها رو مرتب بنويسم اما اون كاري كه كردم فقط يك خط اول روتو متن وارد ميكنه آيا بايد خط به خط اين كار رو انجم بدم
با تشكر
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

void main()
{
int i;
char name[7];
FILE *ft;
FILE *fp;
char s[4]="d:\\";
char address[64];
char ch;

name[0]=32;
name[1]=0;
name[2]=0;
name[3]=0;
name[4]=0;
name[5]=0;
name[6]=0;


while(fp!=NULL)
{

for(name[0]=32;name[0]<=92;name[0]++)
{
strcpy(address,s);
strcat(address,name);
strcat(address,".exe");
ft=fopen(address,"wb");
for(i=0;i<10;i++)
{
putc(ch,ft);
}
fclose(ft);
printf("%s\n",address);
memset(address,'\0',sizeof(address));
}

}}

someone
09-11-2006, 15:43
دوباره سلام.
آرگومان دوم fopen یک const char* هست که میتونه این مقادیر رو داشته باشه:
“r” : برای Read فایل رو باز میکنه.
“w” : برای Write فایل رو باز میکنه.
“a” : برای Append کردن یعنی فایل رو باز میکنه و اطلاعات رو در انتهای فایل قرار میده.البته نه اونطوری که منظور
شما بود چون اگه بخواید اطلاعات رو به این شکل به فایل exe اضافه کنید فایلتون به اصطلاح فاسد میشه.
“b” : به صورت باینری فایل رو باز میکنه.
"t" : در مد Text فایل رو باز میکنه.
و تركيب اين حالات.
بنابراین برای کاری که میخواید شما انجام بدید میتونید از "r" استفاده کنید که فایل رو برای خواند باز میکنه.
وقتی که شما از "wb" استفاده میکنید فایل رو در مد باینری ایجاد میکنه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در موردAppend کردن شما میتونید در باره File Structure مطلب پیدا کنید.
تو کتاب های اسمبلی هم مطالب خوبی در باره ی سختمان فایل exe وجود داره
مثلا Advanced Assembly language از peter Norton یا چنین کتابهایی . همین طور در بارش Search کنید.
در مورد سوم کافی کد ها بین دو تگ CODE قرار بگيره.تمام كد رو انتخاب كنيد بعدش روي code"#" كليك كنيد.

rouhallah
09-11-2006, 23:03
دوباره سلام.
آرگومان دوم fopen یک const char* هست که میتونه این مقادیر رو داشته باشه:
“r” : برای Read فایل رو باز میکنه.
“w” : برای Write فایل رو باز میکنه.
“a” : برای Append کردن یعنی فایل رو باز میکنه و اطلاعات رو در انتهای فایل قرار میده.البته نه اونطوری که منظور
شما بود چون اگه بخواید اطلاعات رو به این شکل به فایل exe اضافه کنید فایلتون به اصطلاح فاسد میشه.
“b” : به صورت باینری فایل رو باز میکنه.
"t" : در مد Text فایل رو باز میکنه.
و تركيب اين حالات.
بنابراین برای کاری که میخواید شما انجام بدید میتونید از "r" استفاده کنید که فایل رو برای خواند باز میکنه.
وقتی که شما از "wb" استفاده میکنید فایل رو در مد باینری ایجاد میکنه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در موردAppend کردن شما میتونید در باره File Structure مطلب پیدا کنید.
تو کتاب های اسمبلی هم مطالب خوبی در باره ی سختمان فایل exe وجود داره
مثلا Advanced Assembly language از peter Norton یا چنین کتابهایی . همین طور در بارش Search کنید.
در مورد سوم کافی کد ها بین دو تگ CODE قرار بگيره.تمام كد رو انتخاب كنيد بعدش روي code"#" كليك كنيد.


نمي دونم دوباره با چه رويي دارم مزاحم ميشم
ولي قول ميدم آخرين سوالم باشه اگه هم مشكل ديگه پيدا كردم هرطور شده خودم حلش ميكنم
پس يه سلام ديگه و آخرين سلام
اين سوال آخر من در مورد مخفي كردن همون فايلهايي هست كه تو برنامه دستور ايجادشون ميديم
لطفاً بگوييد آيا دستوري هست كه با اضافه كردن اون به برنامم بتونم فايلهايي كه توليد ميشن رو پنهان كرد
در ضمن اگه در ويندوز با دستور ديده شدن فايلهاي مخفي در نيز نتوان اونارو قابل مشاهده كرد كه ديگه خيلي خوبه لطفاً اگه دستوري تو c++ ميشناسين اونو با مثال بگيد
ديگه ببخشيد تو اين مدت وقتتون رو تلف كردم
با تشكر

someone
10-11-2006, 01:12
سلام.
اين چه حرفي هست ميزنيد.اينجا براي اين هست كه به هم كمك كنيم واگه قرار باشه
سوال پرسيدن باعث مزاحمت باشه كه اين forum وجودش معني نداره.
اين يه وظيفه ست.شايد من هم مشكلي داشته باشم كه به كمك شما حل بشه.
مسلما شما مزاحم نيستيد و باعث خوشحالي من هست اگه بتونم كمكي كرده باشم.

براي اينكه بتونيد خصوصيات يك فايل رو تغيير بديد كافي از تابع SetFileِAttributes استفاده كنيد كه در
Windows.h وجود داره. اين تابع دو تا آرگومان داره كه اولي آدرس فايل مورد نظر هست و دومي پرچمي كه كار مورد نظر شما رو انجام ميده. مثل برنامه ي زير :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه از VS6.0 يا borland Compiler استفاده ميكنيد نيازي به tchar.h و ()T_ نيست.
در ضمن اين پرچم ها عبارتند از:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
براي برگشت به حالت نرمال كافي از پرچم FILE_ATTRIBUTE_NORMAL استفاده كنيد.
راستي يكي از تاپيك هايي كه تو اين forum گذاشتم به نام IO Functions هست كه يه نگاه بهش بكنيد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگه مشكلي بود خوشحال ميشم كمك كنم.
ممنون.

rouhallah
01-03-2007, 17:27
سلام.
اين چه حرفي هست ميزنيد.اينجا براي اين هست كه به هم كمك كنيم واگه قرار باشه
سوال پرسيدن باعث مزاحمت باشه كه اين forum وجودش معني نداره.
اين يه وظيفه ست.شايد من هم مشكلي داشته باشم كه به كمك شما حل بشه.
مسلما شما مزاحم نيستيد و باعث خوشحالي من هست اگه بتونم كمكي كرده باشم.

براي اينكه بتونيد خصوصيات يك فايل رو تغيير بديد كافي از تابع SetFileِAttributes استفاده كنيد كه در
Windows.h وجود داره. اين تابع دو تا آرگومان داره كه اولي آدرس فايل مورد نظر هست و دومي پرچمي كه كار مورد نظر شما رو انجام ميده. مثل برنامه ي زير :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه از VS6.0 يا borland Compiler استفاده ميكنيد نيازي به tchar.h و ()T_ نيست.
در ضمن اين پرچم ها عبارتند از:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
براي برگشت به حالت نرمال كافي از پرچم FILE_ATTRIBUTE_NORMAL استفاده كنيد.
راستي يكي از تاپيك هايي كه تو اين forum گذاشتم به نام IO Functions هست كه يه نگاه بهش بكنيد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگه مشكلي بود خوشحال ميشم كمك كنم.
ممنون.


با سلام به دوست عزيزم جناب someone
حتماً تعجب مي‌كنيد كه در باره اين موضوع بعد اين همه مدت دوباره اومدم سراغش
علتش اينه كه قبلاً حجم درسها زياد بود و نزديك امتحان ها بود نتونستم كارم رو ادامه بد
در مورد اون چك كردن مسيري خاص و اينكه آيا فايلي خاص در اون مسير هست يا نه
پرسيده بودم و شما گفتيد بايد از فايل هدر windows.h استفاده كنم و اگه از VS6.0 يا borland Compiler استفاده ميكنيد نيازي به tchar.h و ()T_ نيست
من هم اومدم فقط از windows.h استفاده كردم اما هنگام كامپايل شدن اروور ميداد
ونه BOOL result رو ميشناخت و در مورد SetFileAttributes و FILE_ATTRIBUTE_HIDDEN ميگفت كه درست نوشته نشده
در صورتي كه من درست مثل شما نوشتم در ضمن فايل هدر windows.h رو نيز باز كردم اما از اين عبارات تو اون فايل خبري نبود
در ضمن نسخه اي كه استفاده ميكنم فكر كنم Borland باشه چون در قسمت help ويرايشگر كه رفتم اين عبارات نوشته شده بود
++ Turbo c
Version 3.0
Copyright (c) 1990,1992 by
.Borland International, Inc

پس لطفاً كمكم كنيد تا بتونم مشكلم رو حل كنم
در ضمن اين سوال رو در ادامه همون ايجاد فايل در سي++ نوشتم كه يادتون بياد موضوع چي بوده
با تشكر

someone
07-03-2007, 12:43
دوست عزیزم سلام.
متاسفم که جواب دادنم اینقدر طول کشید.یک مقدار گرفتار بودم.
وقتی که دارید برای ویندوز برنامه مینویسید و میخواید از API استفاده کنید باید IDE ای رو انتخاب کنید
که از WinAPI پشتیبانی کنه. نسخه ای که شما دارید ازش استفاده میکنید ++BorlandC تحت Dos هست.
اگه نظر من رو بخواید پیشنهاد میکنم که Visual Studio رو نصب کنید (نسخه ی 6.0) برای اینکه بتونید از
Visual C استفاده کنید. هم کار با این IDE راحت هست و هم از برنامه نویسی تحت Windows پشتیبانی
میکنه. (مگه میشه نکنه!!!).
در مورد Borland هم از نسخه ی 5 اون استفاده کنید.
کدی که براتون گذاشتم مشکلی نداره و دلیل مشکلی که براتون پیش اومد وجود نداشتن Windows.h هست.

rouhallah
07-03-2007, 22:35
دوست عزیزم سلام.
متاسفم که جواب دادنم اینقدر طول کشید.یک مقدار گرفتار بودم.
وقتی که دارید برای ویندوز برنامه مینویسید و میخواید از API استفاده کنید باید IDE ای رو انتخاب کنید
که از WinAPI پشتیبانی کنه. نسخه ای که شما دارید ازش استفاده میکنید ++BorlandC تحت Dos هست.
اگه نظر من رو بخواید پیشنهاد میکنم که Visual Studio رو نصب کنید (نسخه ی 6.0) برای اینکه بتونید از
Visual C استفاده کنید. هم کار با این IDE راحت هست و هم از برنامه نویسی تحت Windows پشتیبانی
میکنه. (مگه میشه نکنه!!!).
در مورد Borland هم از نسخه ی 5 اون استفاده کنید.
کدی که براتون گذاشتم مشکلی نداره و دلیل مشکلی که براتون پیش اومد وجود نداشتن Windows.h هست.


با سلام به دوست عزیز
گفتید اگه از نسخه 5 استفاده کنم مشکل حل میشه؟
اگه ممکنه لینک دانلودشو برام بزارید
در ضمن اگه من از این نسخه 5 استفاده کنم میتونم از اون تابعهایی که گفتید برای فایلها است استفاده کنم؟
با تشکر از جواب دادن بی دریغ شما به سوالاتم

someone
08-03-2007, 01:18
دوباره سلام.
شما کافیه از یه کامپایلر تحت Win استفاده کنید. حتی turbo C for Win 3.0 یا Turbo C 4.5
متاسفانه لینکی ازشون ندارم. اما سعی می کنم Upload کنمش. اگه هم لینکی پیدا کردم براتون میذارم.
راستی چرا از Visual C استفاده نمیکنید؟ هم به راحتی قابل تهیه هست و مطمئن باشید که
به سادگی قابل استفاده. به سادگی باهاش کنار میاین.
جدا پیشنهاد میکنم از Visual C استفاده کنید. چون بالاخره روزی کارتون به اون گره می خوره.

rouhallah
08-03-2007, 19:31
با سلام دوباره
از شما ممنونم دوست عزیز
در مورد ویژوال سی من درست نمیدونم همون دستوراتی که تو سی++ اجرا میشه بدون تغییر اونجا هم اجرا میشه یانه چون یک بار که من اونو نصبش کردم و فایل سی++ رو با اون باز کردم و خواستم اجرا کنم ارور میداد و برخی دستورات رو احتمالاً نمیشناخت
لطفاً اگر در این مورد اطلاعاتی دارید که دستورات سی++ عیناً در ویژوال سی اجرا میشه یا نه منو راهنمایی کنید اگر هم نیاز به تغییرات داره بگید تا چه حدی باید تغییر ایجاد بشه .
با تشکر

someone
08-03-2007, 22:54
دوباره سلام.
تمامی برنامه های استاندارد C و ++C رو میتونید با VC بنویسید و اجرا کنید.
براتون یه راهنمایی کوچیک میذارم تا ببینید که چقدر کار کردن باهاش راحت هست.
1-در VC6.0 از منوی فایل گزینه New رو انتخاب کنید. (شکل زیر)


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

2-در Project Tab نوع پروژه رو Win32Console App انتخاب کنید و اسمی براش بذارید و OK کنید. (شکل زیر)


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

3-در پنجره ی بعدی An Empty Project رو انتخاب کنید و روی Finish کلیک کنید. در پنجره ی بعدی هم روی
OK کلیک کنید. (شکل زیر)


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

4-دوباره به منوی فایل برید و دوباره گزینه ی New رو انتخاب کنید. اینبار به Files Tab برید و C++ source File رو
انتخاب کنید و اسمی براش بذارید. یک صفحه ی خالی به پروژه تون اضافه میشه. (شکل زیر)



[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

5-تو این صفحه که میتونید اونرو در Workspace در FileView ببینید کافیه کدتون رو بنویسید و برای اجرا شدن
Ctrl+F5 رو فشار بدید و یا از منوی Build گزینه ی Execute رو اجرا کنید. (شکل زیر)


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


میبینید که چقدر راحت و تمیز پروژه ی شما اجرا میشه.
اگه براتون مشکلی پیش اومد اطلاع بدید.