שאלה קטנה

inflatable

New member
שאלה קטנה

כיצד אני מוצא גודל של קובץ txt ב-c? אני יודע שאני צריך להשתמש בfseek ובftell, אבל לא הצלחתי לגלות כיצד למצוא את גודל הקובץ. אשמח אם תוכלו לעזור לי.
 

ronenfishman

New member
נסה

בהנחה ש-file הוא מטיפוס * FILE ומצביע לקובץ פתוח, ובהנחה שקיים משתנה מטיפוס long בשם pos אז:
long tmp_pos = ftell(file); pos = ftell(fseek(file, 0, SEEK_END)); fseek(file, tmp_pos, SEEK_SET);​
יבצע את העבודה. השורה השניה היא החשובה, אבל היא משנה את המיקום בקובץ. השורות הראשונה והשלישית משתפות פעולה להתגבר על בעיה זו. רונן
 

inflatable

New member
תודה רבה!

זה אכן עובד רק עם שינוי קטן.... fseek היא פונקיה שמחזירה ערך אם היא הצליחה או לא ולא את המצביע למיקום החדש, לכן יש להוסיף בין השורה הראשונה לשנייה את השורה fseek(file,0,SEEK_END); ובשורה השלישית לרשום pos=ftell(fr) תודה רבה על התשובה המהירה, לא נראה לי שהייתי חושב על זה לבד... תודה!
 

ronenfishman

New member
צודק, ואפשר גם כך

התוספת מודגשת.
long tmp_pos = ftell(file); pos = ftell(<b>(</b>fseek(file, 0, SEEK_END)<b>, file)</b>); fseek(file, tmp_pos, SEEK_SET);​
 

tami120

New member
FSEEK, FTELL

fseek(&dat,0,2); long num=ftell(&dat);​
fseek- במקרה הזה שם את ה OFFSET 0 בתים מסוף הקובץ ftell- מחזירה את ה OFFSET מתחילת הקובץ
 
למעלה