יוספי פורסם 2015 בפברואר 20 Share פורסם 2015 בפברואר 20 שלוםאני יודע שהפונקציה 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 כאשר הגעתי לסוף הקובץ ולא אחרי ניסיון קריאה כושל)מדוע? זה צריך להיות הפוך...תודה רבה קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2015 בפברואר 20 Share פורסם 2015 בפברואר 20 קראת את התיעוד של eof בכלל? http://www.cplusplus.com/reference/cstdio/EOF/ קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2015 בפברואר 20 Share פורסם 2015 בפברואר 20 גיל, זה ה-eof של C, לא של ++C. יוספי מדבר על הפונקציה eof:http://www.cplusplus.com/reference/ios/ios/eof/ קישור לתוכן שתף באתרים אחרים More sharing options...
יוספי פורסם 2015 בפברואר 20 מחבר Share פורסם 2015 בפברואר 20 את התיעוד קראתי..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 כך פעלתי בדוגמא הראשונה והשניה....הראשונה זה עבד השני זה לא עבדאיפה הטעות שלי? קישור לתוכן שתף באתרים אחרים More sharing options...
borsood פורסם 2015 בפברואר 21 Share פורסם 2015 בפברואר 21 גיל, זה ה-eof של C, לא של ++C. יוספי מדבר על הפונקציה eof:http://www.cplusplus.com/reference/ios/ios/eof/לערבב שתי שפות תכנות ביחד זה רעיון רע (בשלב הלימודים).אם הוא מתכנת בC++ שישתמש בממשקים של C++. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2015 בפברואר 21 Share פורסם 2015 בפברואר 21 הוא אכן משתמש רק בממשקים של ++C, אני לא רואה מה הבעיה כאן. קישור לתוכן שתף באתרים אחרים More sharing options...
יוספי פורסם 2015 בפברואר 21 מחבר Share פורסם 2015 בפברואר 21 אז מה הבעיה שלי? קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2015 בפברואר 21 Share פורסם 2015 בפברואר 21 זה נובע מהאופן שבו קוראים לתוך int.קריאה לתוך int מתבצע באופן הבא: קוראים תו אחר תו מהקלט עד שנתקלים בתו שאינו חלק ממספר (דהיינו לא ספרה). אם הקובץ שלך מכיל רק את התווים 123 (בלי ירידת שורה בסוף) אז מה שיקרה הוא שהתכנית שלך תקרא את הספרות 123, ואז תבוא לקרוא את התו הבאה - ותגיע לסוף הקובץ. אם לדוגמה תוסיף רווח או ירידת שורה בסוף הקובץ אז זה יהיה בסדר.הדרך לבדוק אם קריאה בודדת לתוך int הצליחה היא ע"י בדיקת הפונקציה fail (בלי קשר ל-eof). קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.