עבור לתוכן

שאלה לגבי סמן קובץ C

Featured Replies

פורסם

הפונקצייה מקבל מחרוזת מקובץ טקסט ומדפיסה אותו הפוך ולקובץ טקסט.

אני לא מבין את פעולת fseek .

מישהו יכול להסביר לי איך זה בדיוק עובד בתכנית הבאה??.





void Mirror(FILE *fin,FILE *fout)
{


long n;


fseek(fin,-1,SEEK_END);
for(n=ftell(fin);n>=0;n--)
{
fputc(fgetc(fin),fout);
fseek(fin,-2,SEEK_CUR);






}


}


פורסם

ערוך בבקשה את הכותרת כך שתכיל את תמצית השאלה.

כשאתה קורא מקובץ (או כותב אליו) יש מאחורי הקלעים מצביע על המיקום שלך בקובץ, ותוך כדי הקריאה/כתיבה הוא מתקדם.

fseek מאפשרת לך להזיז את המצביע הזה. היא מקבלת שלושה פרמטרים: הראשון הוא המצביע לקובץ (fin), השני אומר לאן לזוז, והשלישי אומר ביחס לאיזה מקום בקובץ (יכול לקבל שלושה ערכים: SEEK_SET - ביחס לתחילת הקובץ, SEEK_END - ביחס לסוף הקובץ, ו-SEEK_CUR - ביחס למיקום הנוכחי בקובץ).

הקריאה הראשונה ל-fseek אומרת לשנות את המצביע כך שהוא יהיה במקום 1- ביחס לסוף הקובץ (דהיינו, הוא יצביע לתו האחרון בקובץ).

הקריאות ל-fseek בתוך הלולאה אומרות לשנות את המצביע כך שהוא יהיה במקום 2- ביחס למיקום הנוכחי בקובץ (דהיינו, שני תווים אחורה מהמיקום הנוכחי).

ארכיון

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

דיונים חדשים