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 (תו עם קוד 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.