שאלה פשוטה ב-CPP - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה פשוטה ב-CPP


פיני1805

Recommended Posts

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

אני ממשיך בכל זאת להריץ את התוכנית והיא לא מפסיקה לקלוט אחרי 5 תווים. מישהו יכול לעזור לי .הנה מה שרשמתי.

char *ptr;

int i=0;

cout<<"enter string 5 letters"<<endl;

( + + for(i=0;i<5;i

[ cin>>ptr[i;

קישור לתוכן
שתף באתרים אחרים

קודם כל, ערוך את ההודעה ושים את הקוד שלך בטג קוד (כפתור # למעלה) כדי שייראה נורמלי.

לגבי השאלה:

כשהגדרת את ptr, הוא למעשה לא מצביע לכלום (ליתר דיוק, הוא מצביע למקום אקראי בזכרון).

אתה צריך לעשות אחד משני דברים:

א. להשתמש במערך קבוע, ולא במצביע, כלומר:

char arr[5];

(ולקרוא לתוך arr)

ב. להקצות מערך עבור המצביע:

char *ptr;
ptr = new char[5];

(דאג לשחרר אותו בסוף עם delete)

קישור לתוכן
שתף באתרים אחרים

1. ניתן לקלוט תו תו ולבצע ריאלוקציה של (malloc) כל תו (או כל מספר תווים, ע"פ החלטתך האלגוריתמית) - יכול להיות מאד לא יעיל.

2. באופן דומה ל-1 אתה יכול לשריין מקום מאד גדול בזכרון למחרוזת, נניח 500 תוים, ואחרי הקליטה לבצע realloc רק לתווים שאכן נקלטו בפועל.

את כל זה כמובן יש לבצע 5 פעמים, או כמספר המחרוזות שברצונך לקלוט

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...