שיחה:שפת C/פלט וקלט קבצים
הוספת נושאmakefile
[עריכה]דחוף, כדאי להוסיף איך לחלק את התוכנית לקבצים וכיצד לכתוב makefile.--מקפץ גבעות 18:29, 27 מרס 2006 (UTC)
- זה חשוב (לא "דחוף") אך לא רלוונטי לפרק הזה. כתיבת makefile היא כבר לא חלק משפת C אלא קשורה לתכנות באופן כללי בסביבות מסויימות (מי שמשתמש ב-Visual C++ לא צריך makefile). לדעתי כדאי לציין את זה שאפשר לכתוב את התוכנית בכמה קבצים כבר יחסית בתחילת הספר. גדי אלכסנדרוביץ' 07:38, 28 מרס 2006 (UTC)
- מה זה makefile בכלל?--80.178.128.177 14:05, 13 באוגוסט 2006 (IDT)
FILE
[עריכה]כתוב "FILE הוא מבנה המוגדר בשפה, ומכיל נתונים על הקובץ שמאפשרים גישה מסודרת אליו." הוא לא מוגדר בשפה, אלא בקובץ (אין לי מילה אחרת) stdio.h 80.178.128.177 14:07, 13 באוגוסט 2006 (IDT)
- ההצהרה וההגדרה שלו חייבות להימצא ב-stdio.h, והן חלק מהתקן של שפת C. זו אמנם לא מילה שמורה של השפה, אבל לא רק מילים שמורות של שפת תכנות הן חלק ממנה. conio.h • שיחה 14:31, 13 באוגוסט 2006 (IDT)
- לדעתי יש מקום לציין שהן חלק מהספריה הסטנדרטית, ולא חלק מהשפה. במערכות embedded, לדוגמה, לא תמיד משתמשים בספריה הסטנדרטית. Thedsadude 19:05, 13 בדצמבר 2007 (IST)
שם פרק מטעה
[עריכה]לדעתי שם הפרק מטעה, ואמור להיות "פלט וקלט קבצים". אגב, גם ההערה הראשונה בשיחה כאן מראה פירוש אחר לחלוטין למילה "קבצים". Thedsadude 00:47, 2 בדצמבר 2007 (IST)
- שיניתי אותו.Thedsadude 13:22, 6 בדצמבר 2007 (IST)
בעיה בfscanf (ובמידה מסויימת גם בfprintf)
[עריכה]כפי שהנושא מוצג כעת, fscanf לא יכולה להיכשל. בדוגמה המוצגת, מה קורה אם בקובץ אין שני מספרים? לדעתי זו שגיאה רצינית לא לדבר על הערכים המוחזרים מהפונקציות הללו, ובמיוחד בfscanf. Thedsadude 13:24, 6 בדצמבר 2007 (IST)
בעיות בדוגמה לfgetc
[עריכה]לדעתי, הדוגמה בעייתית ממגוון סיבות:
- יש סיבה שfgetc מחזירה int ולא char, ויש לקלוט את הקלט לint, לבדוק אותו, ורק אז להמיר אותו לchar. על כך נכתב רבות במגוון פורומים באינטרנט.
- הפונקציה count_chars_in_file לדעתי מטעה, מכיוון שהיא איננה סופרת כלל את מספר התווים בקובץ:
- היא סופרת את התווים למעט, משום מה, תו הירידה לשורה החדשה.
- היא סופרת את מספר התווים מהread pointer הנוכחי של מצביע לFILE (שלפונקציה אין מושג קלוש מה קרה אתו), לסוף הקובץ. לדעתי, על הפונקציה לקבל בכלל שם של קובץ, או, לחלוטין לעשות fseek בתחילת הפוקנציה לתחילת הקובץ. היות שהדוגמה מופיעה לפני fseek, זו אינה אפשרות קבילה. נראה לי לחלוטין שאכניס את גוף הפונקציה לmain, ואולי אוסיף את הגרסה הנוכחית כתרגיל. Thedsadude 10:22, 9 בדצמבר 2007 (IST)
עזרה בשכתוב הפרק
[עריכה]שלום, זה פרק לא קטן, והוא קצת מעצבן לכתיבה. הנושאים השונים בו כתובים בצורה לא אחידה, וקצת לא מהוקצעים באופן כללי. אשמח אם תוכלו "לאמץ" פרקון. גם תרגילים יתקבלו בשמחה. תודה. Thedsadude 12:45, 15 בדצמבר 2007 (IST)
קיצוץ בנושאי הפרק
[עריכה]יש כפילות גדולה מדי בין הפונקציונאליות השונה של פונקציות הקלט והפלט המוצגות פה. לדעתי, בהתחשב בכך שמדובר בספר מתחילים, ובפרט בהשוואה לפרקים אחרים - מרוב עצים לא רואים את היער. שום דבר רע לא יקרא אם fprint-fscanf וfputs-fgets יוצגו כאן, ותו לא. בין כה וכה אין שום סיכוי (או טעם) שספר יכסה את כל הספריה הסטנדרטית. אני מתכוון לקצץ בנושאים, ולהתמקד בהצגה ברורה יותר של הנושאים שיישארו. Thedsadude 12:12, 3 בינואר 2008 (IST)
- את הקוד שדיבר על fread וfwrite העברתי לתרגיל בשפת C/שימוש בספריות/תרגילים. Thedsadude 00:39, 6 בינואר 2008 (IST)
טעויות בפרק
[עריכה]- סגירת קובץ מתבצעת ע"י (fclose(FILE* f ולא ע"י free (ברור שפשוט שכחו להחליף את השם)
- אני לא בטוח שכאשר פותחים קובץ עם פרמטר a מה שכותבים לתוכו מוסתר. נדמה לי שפיתחה כזאת מביאה את המצביע לתו של סוף הקובץ, כך שהכתיבה החדשה דורסת אותו, ובסופו של דבר הוא מופיע רק אחרי מה שכותבים.
- בבדיקה קצרה מסתבר שהצדק איתך. תוקן. Johnny Zoo 10:38, 31 במרץ 2008 (IDT)
שאלה
[עריכה]מה יכולות להיות הסיבות לקבל NULL בניסיון להגדיר מצביע לקובץ? והאם שם הקובץ צריך להיות c:\Users\... או פשוט השם שלו שאני יכול לראות בשולחן העבודה? בנציון יעבץ (שיחה) 18:11, 15 בפברואר 2021 (IST)
- הסתדר תודה בנציון יעבץ (שיחה) 11:07, 19 בפברואר 2021 (IST)