לדלג לתוכן

שיחה:שפת C/פלט וקלט קבצים

תוכן הדף אינו נתמך בשפות אחרות.
הוספת נושא
מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
תגובה אחרונה: לפני 3 שנים מאת בנציון יעבץ בנושא שאלה

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)תגובה