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