פורסם 2008 ביולי 1217 שנים אני מנסה לקלוט מחרוזת בת 5 תווים. וכל פעם הקומפיילר רושם לי שהמצביע שלי לא מאותחל. לא הבנתי מה צריך להגדיר בדיוק.אני ממשיך בכל זאת להריץ את התוכנית והיא לא מפסיקה לקלוט אחרי 5 תווים. מישהו יכול לעזור לי .הנה מה שרשמתי. char *ptr; int i=0; cout<<"enter string 5 letters"<<endl; ( + + for(i=0;i<5;i [ cin>>ptr[i;
פורסם 2008 ביולי 1217 שנים קודם כל, ערוך את ההודעה ושים את הקוד שלך בטג קוד (כפתור # למעלה) כדי שייראה נורמלי.לגבי השאלה:כשהגדרת את ptr, הוא למעשה לא מצביע לכלום (ליתר דיוק, הוא מצביע למקום אקראי בזכרון).אתה צריך לעשות אחד משני דברים:א. להשתמש במערך קבוע, ולא במצביע, כלומר:char arr[5];(ולקרוא לתוך arr)ב. להקצות מערך עבור המצביע:char *ptr;ptr = new char[5];(דאג לשחרר אותו בסוף עם delete)
פורסם 2008 ביולי 1217 שנים מחבר איך אני מאתחל נגיד מערך של מצביעים אם אני רוצה לקלוט 5 מחרוזות שהמשתמש מכניס ואין לי מושג מה יהיה הגודל שלהם?
פורסם 2008 ביולי 1317 שנים 1. ניתן לקלוט תו תו ולבצע ריאלוקציה של זכרון (malloc) כל תו (או כל מספר תווים, ע"פ החלטתך האלגוריתמית) - יכול להיות מאד לא יעיל.2. באופן דומה ל-1 אתה יכול לשריין מקום מאד גדול בזכרון למחרוזת, נניח 500 תוים, ואחרי הקליטה לבצע realloc רק לתווים שאכן נקלטו בפועל.את כל זה כמובן יש לבצע 5 פעמים, או כמספר המחרוזות שברצונך לקלוט
פורסם 2008 ביולי 1317 שנים הוא עובד ב-++C, לא C. משתמשים ב-new, לא malloc.בעקרון בשביל זה נועד הקלאס string שמהווה מחרוזת בגודל דינמי (ומנהל את כל הקצאות ושחרורי הזכרון בשבילך).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.