בעיה ב-c בבקשה!!!

liron1985

New member
בעיה ב-c בבקשה!!!

שלום רואים לי לירון אני בת 18 מאזור המרכז אני עכשיו כותבת תוכנה בשפת c . במהלך העבודה שלי נתקלתי בבעיה והיא: יש לי קובץ טקסט רגיל בעלת חמש שורות אני צריכה למחוק רק את השורה השלישית ואז אני צריכה לכתוב לקבוץ משהו חדש לשורה השלישית אני מקווה מאוד שתעזרו לי בבעיה בתודה לירון אני יודעת שצריך לעבוד עם הפונקציה fseek תודה
 

אלדד28

New member
אז ככה -

תבדקי בעזרת fseek את גודל הקובץ, תקצי buffer מספיק גדול, תקראי לתוכו את כל הקובץ, חפשי את השורה השלישית, הדפיסי את מה שלפניה ואת מה שאחריה לקובץ, ובין שתי ההדפסות האלו את צריכה להדפיס את המשהו החדש.
 

liron1985

New member
זאת אני לירון שוב

תודב רבה לך אלדד אבל אם אתה יכול לרשום לי את השורות הללו אני פשוט לא כל כך חזרה בחומר הזה ואם לא תודה בכל זאת בייי
 

MotiAd

New member
מבחינה עקרונית...

היי לירון. נניח ו-fseek מקבל כפרמטר את שם הקובץ ומחזיר את גודלו:
int f_size = fseek("/filename");​
או שהוא מקבל ידית (מילה מוזרה) לקובץ. בכל מקרה לאח"כ:
char *buffer = (char*)malloc(f_size);​
אני אפילו לא מאמין שאני זוכר את כל זה. ולאח"כ את פשוט קובצת שורה שורה עד שאת מגיעה לשורה שלישית (משתמשת בלולאה או שיש לכך פונקציה מיוחדת. אם בלולאה אז תחפשי את תו סיום שורה) אח"כ פשוט תעתיקי את מה שאת צריכה ל-buffer אבל תיזהרי בגלל הבדלי גודל. תקצי שורה חדשה. תמחקי את כל מה שכתוב בקובץ, תעתיקי את השורות הקודמות, תעתיקי עכשיו את השורה החדשה, ותחזירי את שאר השורות. מכאן נשאר לך רק לשמור את הקובץ. אני לא יודע אבל אני חושב שיש פונקציה שמאפשרת לעשות append לקובץ. זה מקל מאוד את העבודה. שלך, מוטי.
 
למעלה