facebook pixel מדריך: פירוט שפת תכנות - string (מערך של תווים chars) - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

לקוחות נכבדים, אלה שעות הפעילות של המחסן במהלך פסח 2024:
ערב חג וחג ראשון (22-23/04) - המחסן סגור
חול המועד (24-25/04) - המחסן יפעל בין 8:00 עד 15:00
ערב חג וחג שני (28-29/04) - המחסן סגור
נחזור לפעילות רגילה ביום שלישי 30/04
חג שמח!

פירוט שפת תכנות - string (מערך של תווים chars)


2022-06-14 10:40:07
מחרוזת טקסט (text) אפשר לייצג בשני דרכים. תוכלו להשתמש בסוג נתון String, שחלק מהסביבה אחל מגרסה 0019, או שתוכלו להגדיר מחרוזת כמערך של תווים (chars) שמסתיימת ב-NULL. עמוד זה מסביר את השיטה השניה. לפרטים נוספים על סוג נתון String, שנותן לכם יותר יכולות על חשבון כמות הזכרון, ראו String (אובייקט object).

דוגמאות

קוד: בחר הכל
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

אפשרויות הגדרת מחרוזות טקסט
  • Str1 - הגדירו מערך של תווים (chars) מבלי לאתחל את הערך שלהם
  • Str2 - הגדירו מערך של תווים (chars) עם תו אחד יותר ממה שצריך והמהדר (compiler) ישלים הוספה של תו ה-NULL הדרוש
  • Str3 - הוסיפו את תו ה-NULL מצורה מפורשת
  • Str4 - אתחלו עם מחרוזת קבועה הרשומה בגרשיים, המהדר יגדיר את גודל המערך כך שהמחרוזת וגם תו ה-NULL יכנסו לתוכה
  • Str5 - אתחלו את המערך עם גודל מפורש ומחרוזת קבועה
  • Str6 - אתחלו את המערך והשאירו מקום פנוי למחרוזות גדולות יותר
סיומת ה-NULL
בדרך כלל מחרוזות טקסט מסתיימות בתו NULL (תו עם קוד ASCII בערך 0). זה מאפשר לפונקציות (כמו ()Serial.print) לדעת איפה המחרוזת מסתיימת. אחרת הן ימשיכו לקרוא את הבתים (bytes) העוקבים בזכרון שהם לא חלק מהמחרוזת טקסט.
זה אומר שהמערכים שלכם צריכים להיות גדולים בתו אחד נוסף מעבר לאורך המחרוזת שתרצו לשמור בהם. זו הסיבה לכך שמערכים Str2 ו-Str8 בדוגמה מוגדרים בגודל של 8 תווים, למרות שאורך המילה "arduino" הוא רק 7 תווים, התו האחרון מתמלא אוטומטית ב-NULL. גודל המערך Str4 יוגדר אוטומטית ל-8 תווים, אחד לתו ה-NULL. במערך Str3 הגדרנו את תו ה-NULL בצורה מפורשת (כתוב כ-'0\').
שימו לב שיש אפשרות להגדיר מחרוזת טקסט ללא NULL בסוף (למשל אם הייתם מגדירים את אורך המערך Str2 בגודל 7 במקום 8). זה ישבש את פעולות רוב הפונקציות המטפלות במחרוזות, כך שרצוי לא לעשות את זה בכוונת תחילה. אם אתם רואים שמשהו מתנהג מוזר (נעשה טיפול בתווים שלא במחרוזת), כנראה שזו הבעיה.

גרשיים כפולים או גרש בודד?
מחרוזות טקסט תמיד מוגדרות בגרשיים כפולים ("Abc") ותווים תמיד מוגדרים עם גרש בודד ('A').

שבירת מחרוזות ארוכות
אתם יכולים לשבור מחרוזות ארוכות בצורה הבאה:
קוד: בחר הכל

char myString[] = "This is the first line"
" this is the second line"
" etcetera";


מערך של מחרוזות
כשעובדים עם כמות גדולה של מחרוזות, כמו למשל בפרוייקט עם מסך LCD, בדרך כלל נח לסדר את המחרוזות במערך. מכיוון שהחרוזות עצמן הן מערכים, זו בעצם דוגמה של מחרוזות דו-מימדיות.
בדוגמה בהמשך הכוכבית אחרי הגדרת סוג נתון "*char" מסמנת שזהו מערך של מצביעים. למעשה כל שם שאתם מגדירים למערכים הוא בעצם מצביע, כך שהכוכבית בסוף מסמלת זהו מערך של מערכים. מצביעים הוא אחד הנושאים המסובכים עבור המתחילים עם שפת C, אבל זה הכרחי להבין את הפרטים על הנושא כדי להשתמש בהם בצורה יעילה במקרים אלה.

דוגמה

קוד: בחר הכל
char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};

void setup(){
Serial.begin(9600);
}

void loop(){
for (int i = 0; i < 6; i++){
   Serial.println(myStrings);
   delay(500);
   }
}


ראו גם:

arrays (מערכים)
PROGMEM
הגדרת משתנים

פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של string לפי רישיון Creative Commons Attribution-ShareAlike 3.0.