עבור לתוכן

הקצאה דינמית ומערכים בשפת C

Featured Replies

פורסם

אז להיכן נכנסת העובדה שאתה לא יודע כמה תווים יוכנסו על ידי המשתמש?

אתה רוצה לבדוק שהגעת לסוף המערך ואז להגדיל אותו אם אין יותר מקום. בסוף הלולאה תכניס את ה-null termination

פורסם
  • מחבר

הצלחתי, תודה

שאלות נוספות (וכנראה שיהיו) - בהמשך ;)

פורסם
  • מחבר

עזרה נוספת -

למה הקוד הבא מתפוצץ?

מה שאני מנסה לעשות זה שהפונקציה תכניס למערך char של פויינטרים מספר מסויים של מחרוזות. תא n-1 יצביע למחרוזת ה-n (התא ה-0 יצביע למחרוזת הראשונה וכו').

onjkQHO.jpg

נערך על-ידי א

פורסם

זה אומר שגלשת איפשהו מגבולות המערך ו/או ניגשת לזיכרון לא חוקי.

תנסה לדבג צעד אחר צעד כדי לראות איפה הבעיה.

במבט על הקוד אני רואה שיש לך שגיאה חמורה באופן שבו אתה משתמש ב-malloc/realloc/free.

נערך על-ידי שניצל

פורסם
  • מחבר

מהי השגיאה החמורה?

פורסם

אתה מקבל ערך כלשהו כתוצאה מ-malloc ומעביר ערך אחר לחלוטין ל-realloc/free.

פורסם
  • מחבר

אוי ואבוי.

אז צריך לשמור את הכתובת הראשונית של ההקצאה בצד?

פורסם
  • מחבר

אם אני אצהיר על מצביע CHAR אחר, שיוצבע ל p, אז בשינוי של p גם אותו מצביע ישתנה. איך אני שומר כתובת במשתנה?

פורסם

מה? לא הבנתי את הכוונה. תכתוב כאן את הקוד הרלוונטי.

פורסם
  • מחבר

זה מה שעשיתי:

j8JOUrz.jpg

כעת זה מקבל רק מחרוזת אחת ומסיים

פורסם

הקוד שלך ממש ממש לא מסודר ולא ברור. תפריד את הקוד לפונקציות. שתהיה לך פונקציה שקוראת שורה אחת בודדת ותוודא שהיא עובדת, בכל המקרים.

פורסם
  • מחבר

התבקשתי לעשות את זה בפונקציה אחת.

באמת חסרות כמה הזחות, אבל למה לא מסודר?

פורסם

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

נערך על-ידי שניצל

פורסם

הכתובת (מצביע) שאתה מנסה לשחרר אינה בהכרח זהה לכתובת שקיבלת מ-malloc. למה? זה כי עשית משהו מסויים...

נערך על-ידי Zelig

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים