פורסם 2011 במרץ 2114 שנים שלום,מישהו יכול להסביר לי אולי איך אני יכולה לעבוד עם קבצים בשפת C?בעיה לדוגמא:יש לי קובץ טקסט שנותנים לי ואני צריכה לקרוא את הקובץ ולפעול ע"פ מה שרשום בו.אם לדוגמא האות הראשונה בשורה היא # אני צריכה להתעלם מהשורה הזו.אם יש בתחילת השורה מספר אז אני צריכה לפעול בהתאם {ע"פ קביעה של מה עושה כל מספר}.
פורסם 2011 במרץ 2114 שנים הפונקציה ()fgets תחזיר לך שורה-שורה מקובץ לתוך *char, ומשם תוכלי כבר לקרוא תו-תו ולעשות מה שמתחשק לך.
פורסם 2011 במרץ 2114 שנים מחבר א'- תודה.את זה שאפשר להשתמש בפונקציה הזו אני יודעת אבל אני לא יודעת איך להשתמש בזה בתוכנה.. מבחינת כתיבה... אני מסתבכת עם היישום.אתה יכול לתת לי בבקשה דוגמא לשימוש בפונקציה ושימוש כלשהו במצביע CHAR שנוצר?האם הפוקציה מעתיקה לי את כל הטקסט למחרוזת אחת או כל שורה בנפרד? איך זה עובד?איך אני מגדירה את הגודל של המחרוזת אליה הטקסט אמור לעבור?הבנתי שיש איזה פונקציה בשם STRDUP שאמורה להקל על העניינים? איך משתמשים בה?
פורסם 2011 במרץ 2114 שנים שורה-שורה.הסבר ודוגמה:http://www.cplusplus.com/reference/clibrary/cstdio/fgets/
פורסם 2011 במרץ 2114 שנים מחבר תודה רבה.כתוב שהפונקציה קוראת עד ירידת השורה.אם לדוגמא יש מספר שורות. איך אני יכולה לגרום לו להמשיך לקרוא ולבצע גם את השורה הבאה?[br]פורסם בתאריך: 21.03.2011 בשעה 12:17:39ושאלה נוספת:איפה אני צריכה לשמור את הקובץ כדי שכשאני מריצה את התוכנית זה באמת יקרא את הקובץ?
פורסם 2011 במרץ 2114 שנים אם לדוגמא יש מספר שורות. איך אני יכולה לגרום לו להמשיך לקרוא ולבצע גם את השורה הבאה?בלולאה, מן הסתם.איפה אני צריכה לשמור את הקובץ כדי שכשאני מריצה את התוכנית זה באמת יקרא את הקובץ?בספרייה שממנה התוכנית רצה. לחילופין אפשר לפתוח את הקובץ עם שם מסלול מלא (משהו כמו "c:\\blabla\\file1.txt"). במקרה כזה חשוב לשים \\ בכל מקום שבו מופיע \ בשם המסלול, אחרת C תתייחס לזה כescape code).
פורסם 2011 במרץ 2114 שנים מחבר תודה רבה רבה!שאלה נוספת- מסתבר שאני אמורה להשתמש ב-ARGC ARGVיותר נכון- שהmain שלי צריך לקבל ARGC ARGV... מה זה אומר? איך אני ממירה את מה שמתקבל מהקובת לARGC ARGV?
פורסם 2011 במרץ 2114 שנים int main(int argc, char *argv[]){ char* input_file_name = NULL; char* output_file_name = NULL; if (argc == 3) { /* got two parameters + parameter #0 which is the name of the executable program */ input_file_name = argv[1]; output_file_name = argv[2]; if ( DoSomeWork(input_file_name, output_file_name) != 0 ) return 1; /* some sort of file error maybe */ return 0; /* everything is fine */ } else return 2; /* not enough parameters */}
פורסם 2011 במרץ 2114 שנים מחבר שאלה חדשה:נגיד אני קולטת מקובץ שורה המכילה כל מיני קריטריונים עם פסיקים ביניהם, לדוגמא: שם ספר, מחבר, שנת הוצאה וכו'... ואני צריכה להזין כל קריטריון למקומות במבנה שהגדרתי... איך אני יכולה לעשות את זה? עם הרבה לולאות FOR.?
פורסם 2011 במרץ 2114 שנים למה "הרבה" לולאות FOR? פשוט לולאה בתוך לולאה (החיצונית קוראת את השורה מתוך הקובץ, הפנימית מחלקת את השורה לחלקים). כמובן עדיף בכלל להכניס את הלולאה הפנימית לתוך פונקציה נפרדת לחלוטין.דרך אגב, את יכולה לחלק את המחרוזת לחלקים באמצעות strtok.
פורסם 2011 במרץ 2114 שנים זהירות בהפעלת strtok על פרמטרים ב-argv ישירות!עדיף להעתיק אותם קודם עם strdup או משהו אחר.
פורסם 2011 במרץ 2114 שנים אני מניח ש-argv מכיל רק את שם הקובץ איתו היא צריכה לעבוד, לא את התוכן עצמו.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.