نمایش نتایج 1 تا 10 از 10

نام تاپیک: نحوه کار با argv

  1. #1

    نحوه کار با argv

    با سلام
    در مورد آرگون های argc و argv قبلا در تایپ های سوال شده بود و پاسخ داده بودند.
    خیلی از پاسخ ها سر درنیاوردم ولی تا حدودی متوجه شدم
    فقط مسئله این هست که نمیدونم چطور ازش استفاده کنم؟

  2. #2

    نقل قول: نحوه کار با argv

    دوست عزیز شما زمانی که همچین کدی داشته باشید:
    int main(int argc, char *argv[])

    در واقع argc یعنی تعداد arg ها و argv آرایه ای از اون ها هستند.
    در کل این ها برای زمانی هستند که شما از طریق کامند لاین یا ترمینال برنامه رو اجرا میکنید. (با کشیدن و رها کردن فایل ها روی آیکون برنامه هم همچین اتفاقی میفته)

  3. #3

    نقل قول: نحوه کار با argv

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    دوست عزیز شما زمانی که همچین کدی داشته باشید:
    int main(int argc, char *argv[])

    در واقع argc یعنی تعداد arg ها و argv آرایه ای از اون ها هستند.
    در کل این ها برای زمانی هستند که شما از طریق کامند لاین یا ترمینال برنامه رو اجرا میکنید. (با کشیدن و رها کردن فایل ها روی آیکون برنامه هم همچین اتفاقی میفته)
    خیلی ممنون بابت پاسختون
    ولی مسئله اصلی من اینه که چطور باهش کار کنم؟
    چون بدون اینکه چیزی دریافت کنه برنامه توم میشه

  4. #4
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: نحوه کار با argv

    این کد رو در نظر بگیرید:

    #include <cstdio>
    using namespace std;


    int main(int argc, char** argv){
    if (argc<2){
    puts("No Argument");
    return 0;
    }


    for (int i=1; i<argc; ++i){
    printf("Hello %s\n", argv[i]);
    }
    }


    این کد با نام code.exe کامپایل شده و در تصویر زیر همون طور که می بینید به دو صورت اجرا شده:

    code.jpg

    همون طور که دوست مون اشاره کردن علاوه بر اجرا از طریق کامند پرامپت (/ترمینال)، درگ کردن فایل روی آیکن برنامه هم سبب میشه که آدرس اون فایل بعنوان آرگومان به تابع main وارد بشه

  5. #5

    نقل قول: نحوه کار با argv

    نقل قول نوشته شده توسط sd702004 مشاهده تاپیک
    این کد رو در نظر بگیرید:

    #include <cstdio>
    using namespace std;


    int main(int argc, char** argv){
    if (argc<2){
    puts("No Argument");
    return 0;
    }


    for (int i=1; i<argc; ++i){
    printf("Hello %s\n", argv[i]);
    }
    }


    این کد با نام code.exe کامپایل شده و در تصویر زیر همون طور که می بینید به دو صورت اجرا شده:

    code.jpg

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

  6. #6
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: نحوه کار با argv

    در تصویری که گذاشتم همه چیز کاملا مشخصه؛ البته ظاهرا تصویر برای شما لود نشده و بنابراین اینجا هم آپلودش کردم.

    این کد، آرگومان دوم به بعد (که از نوع C-String هستند) رو پرینت میکنه (اولش یه Hello هم درج میشه). اسم فایل کامپایل شده code.exe هستش. در حالت اول بدون هیچ گونه آرگومانی اجرا شد و در نتیجه مقدار argc برابر با 1 ـه (اولین آرگومان اسم یا مسیر خود فایله) و عبارت No Argument پرینت شد. در حالت دوم بصورت code.exe person1 person2 اجرا شد و عبارات Hello person1 و Hello person2 پرینت شد.

  7. #7

    نقل قول: نحوه کار با argv

    نقل قول نوشته شده توسط sd702004 مشاهده تاپیک
    در تصویری که گذاشتم همه چیز کاملا مشخصه؛ البته ظاهرا تصویر برای شما لود نشده و بنابراین اینجا هم آپلودش کردم.

    این کد، آرگومان دوم به بعد (که از نوع C-String هستند) رو پرینت میکنه (اولش یه Hello هم درج میشه). اسم فایل کامپایل شده code.exe هستش. در حالت اول بدون هیچ گونه آرگومانی اجرا شد و در نتیجه مقدار argc برابر با 1 ـه (اولین آرگومان اسم یا مسیر خود فایله) و عبارت No Argument پرینت شد. در حالت دوم بصورت code.exe person1 person2 اجرا شد و عبارات Hello person1 و Hello person2 پرینت شد.
    ولی وقتی که من همین برنامه رو مینویسم قبل از اینکه چیزی وارد کنم برنامه تموم میشه (اشکال از کامپایلر هست؟ )
    در ضمن به جای اینکار چرا آرایه ای از نوع char ایجاد نمیکنیم تا همین person1,2 را وارد کنیم و ازش استفاده کنیم؟آیا مزیتی در این روش هست؟
    (معذرت میخواهم بابت زیاد بودن سوالاتم ،چون مبتدی هستم خوب درک نمیکنم)

  8. #8

    نقل قول: نحوه کار با argv

    دوست عزیز در پاسخ به سوال اول شما، شاید برنامه در یک پنجره دیگر باز و بسته میشود که به دلیل این است که برنامه سریعاً کار پرینت کردن را انجام داده و تمام شده.
    برای برطرف کردن این مشکل میتونید آخر برنامه یک دستور getchar قرار بدهید.
    و سوال دوم؛ این روش دو مزیت نسبت به روشی که شما فرمودین داره:
    یکی این که کاربر میتونه قبل از این که برنامه کامل لود بشه و یا بدون رفتن به بخش مورد نظر، برنامه رو همراه با فایل های مورد نظر خودش اجرا کنه.
    دوم این که در برنامه های بزرگ تر میتونید هر لحظه این برنامه رو با آرگومان های درخواستی اجرا کنید به جای این که اجراشون کنید و از کاربر بخوان مقادیر رو وارد کنه.
    البته میشه گفت در کل زیاد تفاوت مهمی با بقیه روش ها نداره.

  9. #9

    نقل قول: نحوه کار با argv

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    دوست عزیز در پاسخ به سوال اول شما، شاید برنامه در یک پنجره دیگر باز و بسته میشود که به دلیل این است که برنامه سریعاً کار پرینت کردن را انجام داده و تمام شده.
    برای برطرف کردن این مشکل میتونید آخر برنامه یک دستور getchar قرار بدهید.
    و سوال دوم؛ این روش دو مزیت نسبت به روشی که شما فرمودین داره:
    یکی این که کاربر میتونه قبل از این که برنامه کامل لود بشه و یا بدون رفتن به بخش مورد نظر، برنامه رو همراه با فایل های مورد نظر خودش اجرا کنه.
    دوم این که در برنامه های بزرگ تر میتونید هر لحظه این برنامه رو با آرگومان های درخواستی اجرا کنید به جای این که اجراشون کنید و از کاربر بخوان مقادیر رو وارد کنه.
    البته میشه گفت در کل زیاد تفاوت مهمی با بقیه روش ها نداره.
    مشکل اینجا است که وقتی دستور
    cout <<argv;
    رو مینویسم در کنسول یک عدد در مبنای 16 برمیگردونه (احتمالا آدرسی در حافظه)

  10. #10
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: نحوه کار با argv

    argv یک c-array هست. دستوری که شما نوشتین آدرس اولین داده ذخیره شده در این آرایه رو نمایش میده. اگر میخواین محتویات argv رو نمایش بدین (مثل هر آرایه دیگری در C) نیاز به استفاده از حلقه هستش ( توی کدی که بالاتر نوشتم این مورد ذکر شده).

    پیشنهاد میکنم در مورد c-array ها تحقیق و مطالعه کنید.

تاپیک های مشابه

  1. sys.argv
    نوشته شده توسط ali-iman در بخش Python
    پاسخ: 1
    آخرین پست: سه شنبه 05 شهریور 1398, 11:47 صبح
  2. مبتدی: argv و argc چیست؟
    نوشته شده توسط snbb000 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: پنج شنبه 09 آذر 1391, 09:24 صبح
  3. سوال: کامپایل یک برنامه با ارسال آرگوان های argc و Argv به آن !!
    نوشته شده توسط vasilopita در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 4
    آخرین پست: یک شنبه 19 شهریور 1391, 23:14 عصر
  4. سوال: وظیفه []argv چیست؟
    نوشته شده توسط complexcoding در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: سه شنبه 13 تیر 1391, 20:26 عصر
  5. argc & argv
    نوشته شده توسط paradise_human در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: چهارشنبه 29 اردیبهشت 1389, 12:42 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •