ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






کاربران برچسب زده شده

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2021/10/01
    76
    3

    استخراج عدد از رشته در زبان c

    سلام. چطوری میتونم عدد 27 تو عبارت Delay=27m استخراجش کنم. این عدد بعدا در سون سگمنت میخوام نمایش بدم.
    یک کدی نوشتم اما نمیدونم چطوریه:
    کد HTML:
    #include <mega32.h>
    #include <delay.h>
    
    unsigned char i,j,j2;
    char x[50];
    char str[50]="Speed=120K Delay=27 Hum=30% Time=12:20";
    
    void main(void)
    {
    DDRA  = 0xFF;  // for 7seg
    PORTA = 0x00;
    
    while (1)
          {
          for (i=0;i<50;i++)
          {
              x[i]=str[i];
              if (x[i] == "D")
              {
                  i++;
                  x[i]=str[i];
                  if (x[i] == "e")
                  {
                  j=1;
                  j2=i+5;
                  x2[j]=str[j2];
                  t1[1]=x2[j];
                  j++;
                  x2[j]=str[j2];
                  t2=x2[j];
                  }
              }
          }
    
          PORTA=x2;
          delay_ms(2000);
          }
    }
  2. #2
    2017/02/06
    235
    123

    پاسخ : استخراج عدد از رشته در زبان c

    باسلام.
    اگه فرض کنیم که در رشته ارقام پشت سرهم باشن و خروجی رو بخواید روی سون سگمنت نشون بدید این کد مناسب شماست:


    char *data = "delay=27m";
    int i = 0;
    while (*data){
    if(((*data) >= '0') && ((*data) <= '9')){
    disp_data[i] = ((*data) - 48);
    i++;
    }
    data++;
    }
    طرز کار ساده ای هم داره ،اگه کاراکتر مدنظر نظر در جدول اسکی بین 48 و 57 بود اون رو به بافر سون سگمنت انتقال میده و دیگه نیاز نیست یه بار به عدد صحیح تبدیل کنید و دوباره برای نمایش روی سون سگمنت تقسیم کنید.
  3. #3
    2021/10/01
    76
    3

    پاسخ : استخراج عدد از رشته در زبان c

    خیلی ممنون. تقریبا متوجه کد شدم اما ین مقدار *data نفهمیدم. این یعنی چی؟ تو خط اول و در قسمت if اون علامته* میشه توضیح بدید.
    نقل قول نوشته اصلی توسط A.I.E

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    باسلام.
    اگه فرض کنیم که در رشته ارقام پشت سرهم باشن و خروجی رو بخواید روی سون سگمنت نشون بدید این کد مناسب شماست:


    char *data = "delay=27m";
    int i = 0;
    while (*data){
    if(((*data) >= '0') && ((*data) <= '9')){
    disp_data[i] = ((*data) - 48);
    i++;
    }
    data++;
    }
    طرز کار ساده ای هم داره ،اگه کاراکتر مدنظر نظر در جدول اسکی بین 48 و 57 بود اون رو به بافر سون سگمنت انتقال میده و دیگه نیاز نیست یه بار به عدد صحیح تبدیل کنید و دوباره برای نمایش روی سون سگمنت تقسیم کنید.
  4. #4
    2017/02/06
    235
    123

    پاسخ : استخراج عدد از رشته در زبان c

    نقل قول نوشته اصلی توسط alibbb

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خیلی ممنون. تقریبا متوجه کد شدم اما ین مقدار *data نفهمیدم. این یعنی چی؟ تو خط اول و در قسمت if اون علامته* میشه توضیح بدید.
    باسلام.
    الان دیدم که دیتاتون توی یه رشته هست در نتیجه اگه ممکن باشه باید دیتا ها جدا تعریف بشن یا هم اینکه با یکم کد مکانیزمی که من گفتم رو بعد از Delay= و اسپیس اجرا کنید تا همین کار رخ بده.
    اون ستاره هم یکی از اپراتور های مربوط به پوینتر هست که محتوی آدرس داخل دیتا (یا همون [i]data) رو نشون میده.مزیت استفاده از پوینتر اینه که دیگه نیاز به کانتر جداگانه برای اندیس دهی آرایه نیست و بدی اون هم اینه که فقط یه بار قابل استفاده است چون وقتی data که حاوی آدرس اولین مکان آرایه هست تغییر پیدا میکنه تا به خانه بعدی اشاره کنه ،بعد از اتمام کار دیگه به اولین مکان اشاره نمیکنه و عملا باید این کار دستی صورت بگیره.
    حالا چرا data* داخل وایل هست؟میدونیم که هر رشته ای در سی که بین دابل کوت قرار داده شده به یک صفر یا 'n\' ختم میشه ،پس اون شرط تازمانی که که محتوی آدرس داخل دیتا که با * بهش دسترسی داریم صفر نیست کار میکنه و وقتی به صفر برسه یعنی به انتهای رشته رسیدیم و کار تموم شده.
    یه توصیه هم دارم ،بهتره سراغ یه منبع آموزشی برید و مبحث پوینتر ها رو کاملا درک کنید چون برنامه نویسی امبدد به شدت وابسته به همین مسائل هست و بلد نبودن پوینتر یعنی عملا درگیری با مشکلات متعدد در برنامه نویسی امبدد.
نمایش نتایج: از 1 به 4 از 4

موضوعات مشابه

  1. روش ارسال/دریافت رشته در زبان pbp
    توسط leader در انجمن میکروکنترلرهای PIC
    پاسخ: 4
    آخرين نوشته: 2016/02/13, 00:19
  2. خوندن و استخراج رشته String در PIC
    توسط بسطام بيرامي در انجمن میکروکنترلرهای PIC
    پاسخ: 8
    آخرين نوشته: 2012/12/08, 19:26
  3. خوندن و استخراج رشته String در AVR
    توسط بسطام بيرامي در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2012/12/07, 08:52
  4. سوال در مورد تعریف یک رشته در زبان c
    توسط mohammad_6910 در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2012/04/17, 21:38
  5. معکوس کردن یک رشته در زبان سی
    توسط arshia_sat در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2011/01/11, 15:23

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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