פוקציית count structs בקובץ - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

פוקציית count structs בקובץ


omer1595

Recommended Posts

שלום,

ניסיתי לעשות פונקציה שסופרת כמה structs יש לי בקובץ... אבל זה לא הצליח הלולאה פשוט אינסופית.

הינה הקוד:


int count_structs(FILE *fin)
{
int i=1;
struct book b;
rewind(fin);
while (!feof(fin))
{
fseek(fin,sizeof(b),SEEK_CUR);
i++;
// printf("i= %d\n",i);
}
return i;
}

מישהו יכול לעזור לי להבין למה זה לא עובד?

תודה רבה לכל מי שיעזור ושבת שלום :)

קישור לתוכן
שתף באתרים אחרים

קודם כל תודה על התגובה ועל המהירות :)

כבר זה יותר טוב, אבל עדיין יש בעיה - זה רושם מספר שורות לא נכון..

לדוגמא, בקובץ שפתחתי היו 2 שורות והוא רושם לי שיש 4 שורות

יש לך מושג איך אפשר לפתור את זה?

השינוי:

int count_structs(FILE *fin)
{
int i=1;
struct book b;
rewind(fin);
while (!feof(fin))
{
fread(&b,sizeof(b),1,fin);
i++;
}
return i;
}

קישור לתוכן
שתף באתרים אחרים

זה כי יש לך שתי בעיות במימוש:

קודם כל, אתה מתחיל מ-i=1 במקום i=0. אז מלכתחילה יש לך אחד יותר מדי.

בנוסף, כשקוראים קובץ אז מגיעים לסופו רק ברגע שאתה לא מצליח לקרוא עוד יותר. אם לדוגמה הקובץ הוא בגודל 10, אז אתה תגיע ל-feof רק אחרי שתנסה לקרוא את הבית ה-11 בקובץ (ככה שאם לדוגמה ה-struct הוא בגודל 2, אז feof יחזיר אמת רק אחרי הפעם השישית שתנסה לקרוא מהקובץ).

חוץ מזה, יש דרך הרבה יותר פשוטה. אתה יכול לעשות

fseek(file, 0, SEEK_END);

זה מביא את המצביע לקובץ לסוף הקובץ, ואז אפשר להשתמש ב-ftell כדי לדעת מה המיקום המדויק (שהוא כמובן יהיה שווה לגודל הקובץ).

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...