چند تا سوال از سی دارم


چند تا سوال از سی دارم



سوالاتب ساده از c
1- می بینید گه گاهی در تابع main توی اون پارانتز ها می نویسیم متغیر ها رو مثل همین
main(int argc, char *argv[])
می خواستم ببنم این درسته که مثلا برای اینکه فایل برنامه ی ما بعدش مثلا برای اجراش اسم فایل مورد نظر رو می دیم یعنی منظورم اینه myprog.exe file.txt منظورم اون قسمت file.txt است بابا یک کلوم چرا شما و خودم رو گیج کنم هزار بار این قسمت کتاب رو خوندم در این مورد ولی هیچی نفهمیدم می خوام برام یاد بدین که چطور یه برنامه سازم که اول اسم برنامه و بعد اسم فایل ورودیش رو بدم و اگه فقط اسم برنامه رو دادم راهنمای استفاده از اون رو بده یعنی فقط اموزش این قسمتش رو می خوام که اگه فقط فایل اجرایی برنامه ام رو تنها زدم بیاد نحوهی کار کردش رو در اعلان داس بنویسه و در بعد بشه بهش فایل داد ممنون اگه توضیح بدین می دونم خدم هم سوالم رو درست نپرسیدم چون خودم چیزی نمی دونم ازش تا سوالم رو واضح تر بپرسم خیلی هم مبتدی نیستم تا حدود هایی با سی اشنا هستم ولی این ها رو نمی دونم

2- می شه در مورد این نوشته برام توضیح بدین
char xlat[] = {
0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,
0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,
0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53,
0x55, 0x42
};


می دونم سوالام خیلی اعصاب خراب کنن ولی ببخشید دیگه جوانمو جویای نام و علم



برزنهام

1:

سوال اولتون
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توی سوال دوم هم یه آرایه از کارکتر ها تعریف شده که بهش مقدار اولیه اده شده ایم مقدار اولیه به صورت اعداد مبنای 16 هست


سورس اسکرین سیور

2:

;کارکتر تعریف شده چیه ؟؟؟؟

در مورد سوال یک خودم سورس رو می دونم دارم می خوام توضیح کوچولو بدین هر کدوم چی می کنن در واقع می خوام
کاکرد برنامه فقط اون قسمتش که مربوط به سوال منه رو شرح بدید ممنون


multithreading در #C و ++C

3:

منظورتون رو متوجه نشدم

کار اون کد هم خیلی ساده هست توی پارمتر اول تابع main تعداد پامتر های خط فرمان وجود داره پارمتر اول(صفرم) همیشه نام و آدرس فایل هست که توی خط فرمان نوشته شده پس همیشه لا اقل یک پارامتر وجود داره حالا بررسی می کنیم اگه این تعداد یک بود یعنی هیچ پارامتر دیگه ای وارد نشده و نام برنامه خالی نوشته شده پس راهنما رو نشون می دیم در غیر این صورت بقیه برنامه اجرا می شه


شروع كار با visual c .net 2003

4:

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

کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به کد بالا نگاه کن شماره گذاشتم 3 تا از اون 3 تا مشکل دارم ببین
1- اون int argv نماینده ی چیه اون بالا ؟؟؟؟؟
اون طور که معلومه char * argc[] برای اسم فایل مورد نظره!!
2- Argv چه مقداری هایی رو می تونه به خودش بگیره که اون جا نوشته کوچکتر از 2 بود کمکی رو نشون بده در واقعا چطوری می شه که argv یه مقدار به خودش می گیره که 1 هست یا غیره هست
3- این 3 رو اصلا نفهمیدم چیه !!!!! چرا نوشته argc[1] مگه اون از ما اسم فایل رو نمی خواد این 1 دیگه چیه توی اونه ؟؟؟


تابعgotoxy

5:

دوباره سلام.
فکر میکنم با یک مثال مشکل شما حل میشه.


مشکل گرافیکی در c
این برنامه رو بنویسید و کامپایل کنید.


درخواست برنامه کار با فایل (دفترچه تلفن)
و فایل exe ی ایجاد شده رو در ریشه ی یکی از driveهاتون برنامه بدید.


کمک در مورد تابع clrscr , random
مثلا در C.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا این طور برنامتون رو تست کنید.
از منوی start گزینه ی Run رو انتخاب کنید و این دستور رو تایپ کنید : cmd
حالا باید command.com باز شده باشه.
در خط فرمان این رو تایپ کنید.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خروجی برنامه به شکل زیر هست:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا این دستور رو تایپ کنید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خروجی برنامه به این شکل در میآد:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به طور ساده به ازای هر Command ی که در ادامه ی test.exe مینویسید مقدار argv یکی زیاد میشه مثلا:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
باعث میشه مقدار argv برابر 4 بشه.


*argc[] هم مقدار این Command ها رو در خودش ذخیره میکنه.

*argc[] یک آرایه دو بعدی هست.
مثلا اگه شما این دستور رو وارد کنید
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مقدار argc[1]==test1 و argc[2] ==test2 برنامه میگیره.در اینجا مقداره argv هم برابر 3 هست.

در مورد سئوال سوم شما بايد بگم اولين Commandی که برنامتون میگیره اسم یک فایل هست که اگه این فایل وجود نداشته باشه مقدار برگشتی تایع fopen = null ميشه.برنامه سعي ميكنه با اين تابع يك file رو در حالت read only باز كنه.

طبق چيزهايي كه صحبتش رو كرديم مقدار [1]argc اسم file مورد نظر شما هست در ضمن مقدار argv=2 هست.
اميدوارم كمكتون كرده باشه.


6:

به خدا شرمنده خیلی قشنگ توضیح دادید نمی شه روش حرف زد ادم با ضریب هوشی زیر متوسط هم اینو می فهمه

یکی دکمه ی تشکر بذاره تا من از ایشون تشکر کنم

خیلی مخلصیم ممنون

7:

some one جان برام سوال بازم پیش اومد

اولش اینکه من نتوستم کدت و کامپایل کنم اینو نوشت
fatal error C1189: #error : "eh.h is only for C++!"

بعدش در مورد *argc[] این هواره دوبعدیه؟؟ ایا برای چیز هایی که باید سه ورودی بگیرن چی ؟؟؟

8:

دوباره سلام.
مفهوم يه آرايه دو بعدي اين نيست كه فقط ميتونه دو تا ورودي داشته باشه.
اين مثال رو نگاه كنيد:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا آرايه ما اين مقادير رو در خودش داره:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اميدوارم متوجه شده باشيد.
در ضمن فكر كنم چون داريد از iostream و namespace اين header هستفاده ميكنيد اين مشكل براتون پيش اومده احتمالا كامپايلر شما كامپايلر c هست نه كامپايلر ++c
اين تغييرات رو در برنامه بديد:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

9:

کامپایلرم ویژال هستادیو c++ هست
مفهموم ارایه دوبعدی چیه یعنی هر ارایه ای که بیش از یه ارگومان بگیره اخه اینی که من خونده بود در کتاب دوبعدی این بود
char array [10][10] یعنی دو تا [] داشت

می بخشی من در کتاب خودنه بود وقتی اشاره گر به هر چی تعریف می کنم اگه اول بهش مقدار ندیدم منظورم اینجا char*argc[] هست باید با تابع malloc() بهش فضا بدیم منظورش با چیزی که ما اینجا کردیم اخه متفاوته من اشنباه فهمیدم ایا منظورش رو ؟؟

10:

برنامه مشكلي نداره شايد از اين header به اين شكل هستفاده ميكنيد :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كه شكل صحيحش اينه:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ببينيد به طورخيلي ساده اين دو كد با هم فرقي ندارند(گرچه در واقع اين طور نيست)
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كه هر دو dynamic array هستند.
باز به طور ساده تر اين دو كد با هم برابر هستند:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اميدوارم متوجه منظورم شده باشيد.
يك اشاره گر يا pointer يا * Operator به يك آدرس در حافظه اشاره ميكند كه حتما بايد مقدار اوليه داشته باشه
حداقل اينكه مقدارش بايد null باشه مگر در آرگومان يك تابع.

وقتي از malloc هستفاده ميكنيد در حقيقت
خودتون memory management رو به عهده ميگيرد و باعث ميشه كه OS يا سيستم عامل يك بلوك از حافظه به مقدار مورد نياز شما در اختيار شما برنامه بده.اين فضا در Heap ايجاد ميشه نه Stack.
در ضمن ميشه يك pointer رو با malloc مقدار دهي كرد مثل كد زير:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته بايد چك كرد كه آيا فضاي خواسته شده به ch داده شده يا نه و سپس هستفاده بايد
حافظه ي ايجاد شده رو آزاد كرد:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اينها مفاهيم مهمي هستند و حقيقتا زياد ساده هم نيستند براي يادگيريشون زياد عجله نكنيد.

به نظرم شما زيادي عجله داريد كه برنامه نايشانسي رو ياد بگيريد.باز هم ميگم زياد عجله نكنيد چون اين مفاهيم بسيار مهم هستند و در برنامه هاي كوچيك خودشون رو نشون نميدن.


11:

فرمودین بگم دوست
دوست سی من یه سوال جدا از از این سوال قبلیم اومد نخواستم دیگه تاپیک جدید بزنم این چطوریه که شما انگار برای چاپ در خروجی stdout انگار از این توابع این کاره هستفاده نمیک نی نمی دونم می نویسی
"بسشبب" >> count

نفهمیدم زیاد چیه این چه روش چطوری باهاش کار می کنن ؟؟

12:

دقیقاً منظورتون رو متوجه نشدم چون خیلی اشتباه تایپی داشتین !

Stdout همون Standard Output هست یعنی مانیتور.

دستور cout برای نمایش متغیر ها و ثوابت در ++C بکار میره.

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

13:

جواب Admiral كامل هست من فقط اضافه كنم اگه يادتون باشه وقتي از printf هستفاده ميكرديد
در آرگومان اول مشخص ميكرديد كه نوع خروجي شما چيه.
مثل كد زير:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اينجا لازم نيست نوع داده خودتون رو تعريف كنيد وهمونطور كه Admiral فرمودند به اين شكل هستفاده ميشه :

کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همينطور با اضافه كردن >> ميتونيد چند نوع مختلف رو در خروجي نشون بديد.مثلا:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

14:

سلام بچه ها اميدوارم حالتون خوب باشه
من دانشجايشان كامپيوتر هستم و هستادمون يه سوال فرموده كه من نوشتم و يه مشكل كوچيك و لي در حقيقت بزرگ دارم
هستاد فرموده يه برنامه اي بنايشانسيد با ++c كه دو تا عدد صد رقمي رو با هم ضرب كنه و من هم نوشتم فقط در موقع گرفتن عدد كه صد رقمي باشه هيچ متغيري ضرفيت اينو نداره واسه همين خواستم با آرايه تك تك عدد رو بگيرم و واسه همين از تابع Getch() هستفاده كردم و متا سفانه خروجي كه مي ده كاراكتره و نمي شه اون رو ضرب يا تقسيم كرد واسه همين مي خواستم ببينم كسي هست بدونه كه تو سي چه تابعي هست كه مي تونه كاراكتر رو سريع از صفحه كليد بگيره و به عدد تبديل كنه
ممنون

15:

اون کاراکتری که برگدونده مبشه کد اسکی اون رقم هست.

چون کدهای اسکی ارقام پشت سر هم هستن :
مثلاً (0 کد اسکیش 30.

1 کدش 31 و ...

) این مقادیر رو منهای 30 کن:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توی c این دستور: '0' خودش کد اسکی 0 برمی پردونه و نیازی نیس که این شماره ها رو حفظ باشی
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
جدول کدهای ascii

16:

دمت گرم حميدرضا ممنون از لطفت


82 out of 100 based on 52 user ratings 802 reviews