שלום , שאלה ב -c .

shamgi

New member
שלום , שאלה ב -c .

שלום לכולם , יש לי שאלה ב -c : אני מנסה ליצור רשימה מקושרת בעזרת structure . ויש לי פונקציה שבונה כזו רשימה ומחזירה פוינטר לתחילת הרשימה . הבעיה שכאשר אני קורא נתונים מהקובץ בפונקצייה בעזרת fscanf או fgets למשתנה line ואח"כ מציב אותו בפונקציה כך head->str=line ומחזיר head אז התוכן הולך לאיבוד . למי שניסה להבין , תודה מראש .
 

daybird

New member
strdup

אתה מצביע על משתנה לוקאלי בscope שמשתנה כל פעם שאתה קורא מהקובץ א. אם struct->str הוא פוינטר ולא מערך תוים קבוע - עשה struct->str = strdup(line) 1 ואח"כ תצטרך לשחרר את המקום הזה. ב. אם יש לך מערך - strcpy(struct->str,line) 1 יפתור לך את הבעיה שהמידע נעלם. איל
 

shamgi

New member
ok , תודה רבה , אבל

כבר ניסיתי להשתמש ב strcpy וזה יצר שגיאה משום מה . אני אנסה שוב בכל זאת . בכל מקרה בפונקציה שיוצרת את הרשימה , ההגדרות הן כאלו : [char line[50 (fgets(line,49,ifp ואז לאחר הקצאת מקום ל item *head ניסיתי להעתיק כך : strcpy(head->str,line וזה לא עבד . אני אנסה בשיטה השנייה שהצעת , המון תודה .
 

shamgi

New member
סליחה סליחה ../images/Emo13.gif

זה לא יוצר שגיאה , המצב הרבה יותר טוב , אבל עדיין בכל הnodes לstr יש את הערך של השורה האחרונה מהקובץ. אם יש לך רעיון למה , זה יעזור לי מאד. תודה .
 
למעלה