פורסם 2021 בינואר 204 שנים יש לי את התרגיל הבא: כתבי תכנית הקולטת מחרוזת ארוכה של מילים יתכן יותר מרווח בין מילה למילה. התוכנית תיצור מערך מצביעים כך שכל איבר יצביע על מילה בודדת. שלבי פונקציה המקבלת את מספר איברי המערך ומדפיסה אותו. אני מנסה כרגע לפתור ויש לי בעיה - משום מה ברגע שאני עושה REALLOC למטריצה - הערכים משתבשים. (הREALLOC למערך הפנימי של המטריצה בשורה האפס עובד מצוין) הקוד: (פחות חשוב לי עכשיו הנכונות של הפתרון, אלא הבעיה שיש לי ) c code.docx לאחר איטרציה אחת של הלולאה זה הערך במטריצה: mat1 = 0x00000230d6c50850 {0x00000230d6c55250 "hellow"} לאחר ה REALLOC : {<mat1 = 0x00000230d6c552a0 {0xcdcdcdcdcdcdcd50 <Error reading characters of string. מה הבעיה? ניסיתי להדפיס את הגודל של המטריצה (sizeof) לפני ואחרי ה realloac והוא לא השתנה - נשאר 8, (אמור להפוך ל - 16) כלומר ה REALLOC משום מה לא עובד. אני יודעת שאם אין מקום להקצאה חוזר NULL, אבל לא נראה לי הגיוני שזה מה שקרה פה כי זה מספרים מאד קטנים ואין הגיון שאיו מקום, וחוץ מזה לא חוזר NULL אלא איזושהי כתובת מוזרה אחרת.... תודה מראש! נערך 2021 בינואר 204 שנים על-ידי גינגית
פורסם 2021 בינואר 204 שנים בבקשה תצרפי קוד לא במסמך WORD. זה לא נוח לקרוא ככה, יש כפתור להוספת קוד בפורום.
פורסם 2021 בינואר 204 שנים באגים שאולי קשורים ואולי לא: את עושה malloc(sizeof(char)) בשעה שצריך להיות malloc(sizeof(char*)). while (*str1!= ' '&&*str1!='0') צריך להיות '\0' ולא '0'. לא באג, אבל במקום להגדיל את count, ואז realloc ומייד להקטין, היה פשוט יותר לעשות realloc עם count+1. חוץ מזה שהשם count לא נכון, זה צריך להיות max_index או להתחיל מ1 ולגשת לאינדקס count-1. את לא עושה free בסוף. המרצים יורידו על זה כנראה. חוץ מזה אני לא רואה באג (ברפרוף). אם הייתי צריך להמר אז (1) זו הסיבה. נערך 2021 בינואר 204 שנים על-ידי af db creid
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.