מחרוזות כמערכי char
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 12 מתוך 63.
ב-C אין טיפוס נתונים מובנה למחרוזת, כמו זה שאפשר למצוא בשפות תכנות אחרות. במקום זאת, מחרוזות מיוצגות כמערכים של תווים. המושג הבסיסי הזה חיוני להבנת אופן הטיפול בטקסט בתכנות ב-C.
מחרוזת ב-C היא פשוט רצף של תווים המאוחסנים במיקומי זיכרון עוקבים. כדי ליצור מחרוזת, מצהירים על מערך תווים שגדול מספיק כדי להכיל את כל התווים הדרושים, בתוספת מקום נוסף אחד עבור תו סיום מיוחד.
char greeting[6]; // יכול להכיל 5 תווים + תו סיום
char message[20]; // יכול להכיל עד 19 תווים + תו סיוםהדרך הנוחה ביותר לעבוד עם מחרוזות היא לאתחל אותן ישירות באמצעות מילולית מחרוזת כשמכריזים על המערך. C מטפלת אוטומטית בפרטים של אחסון כל תו במערך:
char greeting[6] = "Hello";
// זה מאחסן: 'H', 'e', 'l', 'l', 'o', וגם תו סיום מיוחדאפשר גם לתת ל-C לקבוע את גודל המערך באופן אוטומטי על ידי השמטת ציון הגודל בעת אתחול באמצעות מחרוזת מילולית:
char greeting[] = "Hello"; // בשפת C, הגודל נקבע אוטומטית ל-6חשוב להבין שמחרוזות הן מערכי תווים, כי כך אפשר להבין כיצד C מטפלת בנתוני טקסט ולהתכונן לעבודה עם פונקציות לעיבוד מחרוזות הפועלות על מערכי התווים האלה.
אתגר
קלכתוב תוכנית ב-C שמדגימה יצירה ועבודה עם מערכי תווים לאחסון מחרוזות. התוכנית שלך צריכה:
- להכריז על מערך תווים בשם
greetingעם מספיק מקום להכיל את המחרוזת "Hello" (זכור להביא בחשבון את תו הסיום null) - לאתחל את המערך
greetingעם מחרוזת הליטרל "Hello" - להכריז על מערך תווים שני בשם
messageעם 20 איברים - לאתחל את המערך
messageעם מחרוזת הליטרל "Welcome" - להכריז על מערך תווים שלישי בשם
wordבלי לציין את הגודל, ולאפשר ל-C לקבוע את הגודל באופן אוטומטי באמצעות אתחולו עם "Programming" - להדפיס את שלוש המחרוזות באמצעות
printfעם מציין הפורמט%s - להדפיס את הגודל של כל מערך באמצעות
sizeofכדי להדגים כמה זיכרון תופס כל מערך תווים
הפלט שלך צריך להציג את התוצאות בפורמט הבא:
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12האתגר הזה בוחן את ההבנה שלך כיצד להכריז על מערכי תווים לאחסון מחרוזות, כיצד מחרוזות ליטרליות מסתיימות אוטומטית בתו null כאשר משייכים אותן למערכי תווים, וכיצד C מחשבת באופן אוטומטי את גודל המערכים כאשר משמיטים את ציון הגודל במהלך האתחול.
נסו בעצמכם
#include <stdio.h>
int main() {
// TODO: כתבו כאן את הקוד שלכם
// הצהירו על מערכי התווים ואתחלו אותם כפי שמצוין באתגר
// הדפיסו את המחרוזות ואת הגדלים שלהן
printf("greeting: %s\n", greeting);
printf("message: %s\n", message);
printf("word: %s\n", word);
printf("Size of greeting: %lu\n", sizeof(greeting));
printf("Size of message: %lu\n", sizeof(message));
printf("Size of word: %lu\n", sizeof(word));
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין