string در آردوینو

string در آردوینو

string در آردوینو
string در آردوینو

رشته‌های متنی به دو روش نمایش داده می‌شوند: می‌توانید از نوع‌داده‌ی string در آردوینو استفاده کنید که بخشی از هسته‌ی ورژن 0019 است و یا با آرایه‌ای از نوع char که به null ختم می‌شود، رشته را درست کنید. در این صفحه، روش دوم توضیح داده می‌شود. برای مشاهده‌ی توضیحات شیء string در آردوینو، که به شما عملکرد بهتر در ازای حافظه‌ی بیشتر می‌دهد، به صفحه شیء string مراجعه کنید.

مثال‌ها:

همه‌ی مثال‌های زیر، برای تعریف (اعلان) string، معتبر هستند:

راه‌های تعریف string:

– تعریف یک آرایه از نوع char بدون مقداردهی اولیه (Str1).

– تعریف یک آرایه از نوع char (با یک جای خالی) که خود کامپایلر کاراکترِ null موردنیاز را اضافه خواهد کرد (Str2).

– تعریف یک آرایه از نوع char با افزودن کاراکتر null به‌صراحت در انتها (Str3).

-مقداردهی اولیه با یک ثابت رشته‌ای در علامت کوتیشن. کامپایلر اندازه‌ی آرایه را طوری تعیین خواهد کرد که بتواند ثابت رشته‌ای به همراه کاراکتر null را در خود جای دهد (Str4).

-مقداردهی اولیه به آرایه با اندازه‌ای مشخص و ثابت رشته‌ای (Str5).

-مقداردهی اولیه به آرایه به همراه فضای بیشتر برای رشته‌هایی با طول بیشتر (Str6).

ختم‌ کننده‌ی null

به‌طور‌کلی رشته‌ها به کاراکتر null (کد اسکی 0) ختم می‌شوند. null به توابعی مثل ()Serial.print اعلام می‌کند که انتهای رشته کجاست. وگرنه این نوع توابع بیت‌هایی از حافظه که جز رشته نیستند را نیز خواهند خواند. به دلیل وجود همین کاراکتر null است که رشته‌ها به یک خانه‌ی اضافی، علاوه بر طول مقدارشان، برای ذخیره null نیاز خواهند داشت. به همین خاطر است که گرچه “arduino” هفت کاراکتر است اما Str2 و Str5 باید 8 کاراکتری باشند (خانه‌ی آخر رشته به‌صورت خودکار با null پر خواهد شد). اندازه‌ی Str4 نیز خودکار 8 کاراکتر خواهد شد؛ یکی اضافه‌تر برای ذخیره‌ی null. در Str3 ما خودمان کاراکتر null را صریحاً اضافه کرده‌ایم (با نوشتن ‘\0’).

توجه کنید که می‌شود رشته‌ای بدون null ختم‌ کننده داشت (برای مثال اگر طول Str2 را به جای 8 کاراکتر، 7 کاراکتر در نظر بگیرید). اما این‌ کار عملکرد بسیاری از توابعی که با رشته کار می‌کنند را نادرست می‌کند؛ پس نباید  عمداً این کار را انجام داد. اگر متوجه رفتاری عجیب (هنگام عملیات روی کاراکترها، نه رشته‌ها) شدید، ممکن است علت، همین کار باشد.

تک کوتیشن یا دابل کوتیشن؟

رشته‌ها همیشه درون دابل کوتیشن (“abc”) و کاراکترها همیشه درون تک کوتیشن (‘a’) تعریف می‌شوند.

شکستن و ذخیره‌ی رشته‌های طولانی

می‌توانیم رشته‌های طولانی را با این روش بشکنیم و ذخیره کنیم:

 

آرایه‌ای از رشته‌ها:

هنگام کار با برنامه‌هایی که دارای حجم زیادی از متن هستند (مانند پروژه‌ با نمایشگر LCD)، معمولا راحت است که آرایه‌ای از رشته را تعریف کنیم. از آنجا که رشته‌ها خود آرایه هستند، این کار در واقع مثالی از آرایه‌های دو بعدی است.

در کد زیر (*char)، علامت * بعد از نوع‌داده‌ی char، نشان‌دهنده‌ی این است که این، آرایه‌ای از اشاره‌گرها است. تمامی نامِ آرایه‌ها در واقع اشاره‌گر هستند؛ پس برای ساخت آرایه‌ای از آرایه‌ها، این کار لازم است. مبحث اشاره‌گرها برای مبتدیان در زبان C، کمی مبهم و سخت است؛ اما در اینجا برای استفاده‌ی موثر از اشاره‌گرها، نیازی به فهم دقیق آن‌ها نیست.

مثال:

 

 

اشاره‌گر در آردوینو

منبع

حمایت از Yalda

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Yalda
Yalda

علاقه‌مند به یادگیری چیزهای جدید!

دیدگاه ها

5 دیدگاه

  • sajad
    ۲۲ مرداد ۱۳۹۷

    سلام.
    من یه کدی دارم.
    میخام بگم قبل از ویرگول رو بریز توی متغیر X و بعد از ویرگول رو بریز تو متغیر Y.
    نمیدونم باید چه کدی براش بنویسم اگه راهنمایی کنید ممنون میشم.

    • Zeus ‌
      زئوس Zeus
      ۲۲ مرداد ۱۳۹۷

      خیلی ساده است
      String input = "123;456";
      String firstVal, secondVal;

      for (int i = 0; i < input.length(); i++) { if (input.substring(i, i+1) == ";") { firstVal = input.substring(0, i); secondVal = input.substring(i+1); break; } }

  • sajad
    ۲۲ مرداد ۱۳۹۷

    سلام خسته نباشید
    من یه کدی دارم میخام بگم مثلا قبل از ویرگول را داخل متغیر x بریز و بعد ویرگول را داخل متغیر y بریز.
    یه راهنمایی میکنید که چطور باید این کارو انجام بدم؟
    ممنون میشم.

  • Cozmo
    ۱۹ مرداد ۱۳۹۷

    سلام
    مشکل چیه که متغیر string تو ide آردوینو ارور میده؟
    نمیشناسه اصلن
    رنگی نمیشه نوع متغیر 🙁

    • Zeus ‌
      زئوس Zeus
      ۲۰ مرداد ۱۳۹۷

      سلام
      دوست عزیز ، String رو با اس بزرگ بنویسید مثل زیر
      String 🙂

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

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

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک