פורסם 2013 באפריל 1412 שנים אוקי, אתה בכיוון הנכון.שים לב למה שאמרתי: get ו-put מקדמות את המצביע לקובץ ב-1. תחשוב איפה נמצא המצביע לפני שאתה עושה put.
פורסם 2013 באפריל 1412 שנים מחבר ואללה אחי אני לא מסתדר עם זה ניסיתי כמה אופציות כדי לעקוב אחרי הפוינטר של ה put(), אבל לא מסתדר לי. יש מצב ליותר עזרה? תודה רבה!
פורסם 2013 באפריל 1412 שנים אמרתי לך: seekp.נתתי לך לינק לתיעוד שלה. הנה עוד אחד אפילו:http://en.cppreference.com/w/cpp/io/basic_ostream/seekpתחשוב לוגית: אחרי שה-if הצליח, איפה נמצא המצביע של הקובץ? איפה אתה רוצה שהוא ימצא?עריכה: מסתבר שטעיתי קלות. ל-fstream יש שני מצביעים שלא בהכרח זהים זה לזה - מצביע לקריאה ומצביע לכתיבה. בשביל להזיז את המצביעים משתמשים ב-seekp ו-seekg (ה-p זה לכתיבה וה-g זה לקריאה), ובשביל לדעת מה הערכים שלהם משתמשים ב-tellp ו-tellg.עכשיו תחשוב איך אתה משתמש בזה.
פורסם 2013 באפריל 1412 שנים מחבר עקבתי אחרי הפוינטר של ה put, אבל ראיתי שהוא מתקדם כמו ה get. אחי אני יודע שאולי אני משגע אותך, אבל יש מצ באולי ממש תוכל לעזור לי בקוד?אני ממש כבר אבוד... תודה
פורסם 2013 באפריל 1412 שנים תחשוב לוגית: אחרי שה-if הצליח, איפה נמצא המצביע של הקובץ? איפה אתה רוצה שהוא ימצא?ליתר דיוק: איפה נמצאים המצביעים של הקריאה והכתיבה, ואיפה אתה רוצה שיהיו?
פורסם 2013 באפריל 1412 שנים מחבר זה העניין , הם נמצאים בקמום שאני רוצה ( לפי ה tellg ו tellp) אבל משום מה הוא לא עושה לי את ההזנה המבוקשת כמו שצריך...
פורסם 2013 באפריל 1412 שנים איך אתה יודע שהם נמצאים במקום שאתה רוצה?באיזה מקום הם נמצאים? באיזה מקום נמצא התו שאתה רוצה לשנות? (שים לב שבמחשבים הספירה מתחילה מ-0, לא מ-1).מה התוצאה שאתה מקבל?
פורסם 2013 באפריל 1412 שנים מחבר אני יודע.. חחעקבתי אחרי שני הפוינטרים ( עשיתי להם cout על המסך לכל אורך לולאת ה while ובדקתי), והם נמצאים באותו מקום.. שאני עושה את ההצבה- זה פשוט לא עושה כלום בקובץ..אני באמת לא יודע מה לעשות
פורסם 2013 באפריל 1412 שנים תעלה את הקוד העדכני. אם לא השתמש ב-seekp ו-tellg יש לך טעות.בכל מקרה, אחרי ה-put גם תוסיף את הקריאה הבאה:nf.flush();זה ידאג לכך שהכתיבה אכן תתבצע והמצביעים יסתנכרנו.
פורסם 2013 באפריל 1412 שנים מחבר #include<iostream>#include<string>#include<fstream>using namespace std;int main(){ fstream nf("lamed.txt"); while(!nf.eof()) { char x=nf.get(); if(x=='s') { nf.seekp(nf.tellg()); nf.put('z'); nf.flush(); } }return 0;}
פורסם 2013 באפריל 1412 שנים הקוד הזה אמור לשנות את הקובץ (יש בו טעות, אבל הוא כן אמור לשנות את הקובץ). מה התוכן של הקובץ?
פורסם 2013 באפריל 1412 שנים מחבר בעיקרון זה התוכנית הנסיונית שלי, (התרגיל עצמו הרבה יותר ארוך ומסובך). סתם יצרי קובץ עם ה הטקסט הבא- asdasdaqrqwdsaasd';asdוזה היה אמור לשנות את כל ה -s ל -z אבל זה לא משנה.
פורסם 2013 באפריל 1412 שנים אתה בטוח שהקובץ לא פתוח באיזו תוכנה אחרת שנועלת אותו? אולי אתה מסתכל על הקובץ הלא נכון?כמו שאמרתי, הקוד שלך אמור לשנות את הקובץ, פשוט לא בצורה הנכונה.
פורסם 2013 באפריל 1412 שנים כל פעם שאתה עושה get זה מקדם את המצביע ב-1. אחרי שאתה קורא את התו 's' אז המצביע בקובץ יצביע לתו הבא אחרי ה-s, ולא ל-s עצמו.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.