Menu
Coddy logo textTech

מחרוזות כמערכי 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 מטפלת בנתוני טקסט ולהתכונן לעבודה עם פונקציות לעיבוד מחרוזות הפועלות על מערכי התווים האלה.

challenge icon

אתגר

קל

כתוב תוכנית ב-C שמדגימה יצירה ועבודה עם מערכי תווים לאחסון מחרוזות. התוכנית שלך צריכה:

  1. להכריז על מערך תווים בשם greeting עם מספיק מקום להכיל את המחרוזת "Hello" (זכור להביא בחשבון את תו הסיום null)
  2. לאתחל את המערך greeting עם מחרוזת הליטרל "Hello"
  3. להכריז על מערך תווים שני בשם message עם 20 איברים
  4. לאתחל את המערך message עם מחרוזת הליטרל "Welcome"
  5. להכריז על מערך תווים שלישי בשם word בלי לציין את הגודל, ולאפשר ל-C לקבוע את הגודל באופן אוטומטי באמצעות אתחולו עם "Programming"
  6. להדפיס את שלוש המחרוזות באמצעות printf עם מציין הפורמט %s
  7. להדפיס את הגודל של כל מערך באמצעות 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;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C אונליין