פורסם 2015 בפברואר 2010 שנים שלוםאני יודע שהפונקציה EOF מחזירה TRUE כאשר בוצע ניסיון קריאה כושל ולא כאשר מגיעים לסוף הקובץולכן חשוב לעשות משהו בסיגנוןinfile.get(c);while (!infile.eof(){ outfile <<c; infile.get(c);}ולאwhile (!infile.eof(){ infile.get(c); outfile <<c;}כי אז התו האחרון מועתק כפול, כיוון שאחרי שהוא קורא את התו האחרון הוא עדיין יכנס בריצה הבאה ללולאהאבל יש לי דוגמא שהפונקציה EOF לא עובדת כךאני יוצר קובץ grades.txtשמכיל את הטקסט 123קטע הקוד הבא :ifstream inGrade("grades.txt"); ofstream outRoster("roster.txt"); int tmpGrade; inGrade >> tmpGrade; while (!inGrade.eof() ) { outRoster << tmpGrade <<endl ; inGrade >> tmpGrade; }יצור לי את הקובץ roster.txt ריקאבל אם אעשה ifstream inGrade("grades.txt"); ofstream outRoster("roster.txt"); int tmpGrade; while (!inGrade.eof() ) { inGrade >> tmpGrade; outRoster << tmpGrade <<endl ; }ייצור לי את הקובץ roster.txt עם הערך 123 ( הפונקציה eof החזירה FALSE כאשר הגעתי לסוף הקובץ ולא אחרי ניסיון קריאה כושל)מדוע? זה צריך להיות הפוך...תודה רבה נערך 2015 בפברואר 2010 שנים על-ידי יוספי
פורסם 2015 בפברואר 2010 שנים קראת את התיעוד של eof בכלל? http://www.cplusplus.com/reference/cstdio/EOF/
פורסם 2015 בפברואר 2010 שנים גיל, זה ה-eof של C, לא של ++C. יוספי מדבר על הפונקציה eof:http://www.cplusplus.com/reference/ios/ios/eof/
פורסם 2015 בפברואר 2010 שנים מחבר את התיעוד קראתי..true if the stream's eofbiterror state flag is set (which signals that the End-of-File has been reached by the last input operation).false otherwise. זה אומר שהפונקציה תעבור ל TRUE אחרי שניסיתי לקרוא ולא הצלחתי כי הגעתי לסוף ( או כי הקובץ לא עובד אבל זה לא העניין )קודם צריך לנסות לקרוא ולא להצליח ואז היא תעבור ל TRUE כך פעלתי בדוגמא הראשונה והשניה....הראשונה זה עבד השני זה לא עבדאיפה הטעות שלי? נערך 2015 בפברואר 2010 שנים על-ידי יוספי
פורסם 2015 בפברואר 2110 שנים גיל, זה ה-eof של C, לא של ++C. יוספי מדבר על הפונקציה eof:http://www.cplusplus.com/reference/ios/ios/eof/לערבב שתי שפות תכנות ביחד זה רעיון רע (בשלב הלימודים).אם הוא מתכנת בC++ שישתמש בממשקים של C++.
פורסם 2015 בפברואר 2110 שנים זה נובע מהאופן שבו קוראים לתוך int.קריאה לתוך int מתבצע באופן הבא: קוראים תו אחר תו מהקלט עד שנתקלים בתו שאינו חלק ממספר (דהיינו לא ספרה). אם הקובץ שלך מכיל רק את התווים 123 (בלי ירידת שורה בסוף) אז מה שיקרה הוא שהתכנית שלך תקרא את הספרות 123, ואז תבוא לקרוא את התו הבאה - ותגיע לסוף הקובץ. אם לדוגמה תוסיף רווח או ירידת שורה בסוף הקובץ אז זה יהיה בסדר.הדרך לבדוק אם קריאה בודדת לתוך int הצליחה היא ע"י בדיקת הפונקציה fail (בלי קשר ל-eof).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.