עבור לתוכן

עזרה עבודה אם קבצים FILE*

Featured Replies

פורסם
  • מחבר

איך בדיוק נראה המבנה שלך

 struct phone {
char pname[SIZE],lname[SIZE],phon[SIZE];
};
size is define as 15 right now

האם המחרוזות מוחזקות ע"י מצביעים שמוקצים דינמית

כן אין לי בררה אני לא יכל לדעת כמה מספרים המשתמש יוסיף לרשימה

פתרתי את הבעיה הזאת בתרגיל אחר

gsize=5

ואני בודק מתי יש רק עוד מקום אחד (counter סופר כל פעם שהמשתמש מוסיף נתונים או מוריד)

ואז אני מוסיף 5 ו realloc כדי להגדיל

  i f(counter+1>=gsize)
{
printf("reallocing \n");
gsize=gsize+5;
one=(struct cars*)realloc(one,sizeof(struct cars)*gsize);
if(one==NULL){printf("error no room in memory\n");free(one);} }

בכל מקרה אני חושב שהיה לי הרבה יותר קל לחפש שם אם strcmp ולתת למשמש אפשרות לשנות את אותו מיבנה

אני יכל רק להשתמש ב fseek כמו מקדם של מצביע ++

אחרת אני לא מבין אך fseek ימצא את השם שאני מחפש

פורסם

לא הבנתי מילה ממה שאמרת. אתה חייב לכתוב מסודר יותר.

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

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

פורסם
  • מחבר

סליחה :) על הכתב אני ישתדל

"שהמבנים עצמם מוקצים דינמית"

כן

אני יעבוד על זה מחר

תודה על ההסבר (fseek)

פורסם

תנסה למצוא נוסחא שתחזיר לך את המיקום בקובץ כפונקציה של מספר הרשומה שאתה צריך. אחרי שיש לך את המיקום, תגיע אליו ע"י SEEK, ותכתוב עם fwrite.

רמז - זה כמו סדרה חשבונית.

ארכיון

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

דיונים חדשים