זה תרגיל שנתנו לי לעשות בספר "ללמוד C מהדורה שלישית", בפרק 13: קבצים בינאריים:
כתוב תוכנית הקוראת 10 ציונים וכותבת אותם לקובץ. הציונים ייקראו מהקובץ אל מערך נוסף. הדפס את תוכן שני המערכים.זה הקוד שעשיתי:
#include <stdio.h> #include <conio.h> #include <stdlib.h>void main() { int num, num1, check, i, abc; FILE *ft, *fp = fopen("abcdefg.bin", "wb"); for (i=0 ; i<10 ; i++) scanf("%d", &num); check = fwrite(num, sizeof(int), 10, fp); if (check!=10) { fclose(fp); exit(1); } ft = fopen("abcdefg.bin", "rb"); abc = fread(num1, sizeof(int), 10, ft); if (abc!=10) { fclose(ft); exit(1); } for (i=0 ; i<10 ; i++) printf("%d %d\n", num, num1); getch(); }
|
התוכנית רצה בלי שגיאות אך:
אחרי שאני מקליד את עשרת הציונים התוכנית נסגרת...
היא נסגרת בקטע הבא:
abc = fread(num1, sizeof(int), 10, ft); if (abc!=10) { fclose(ft); exit(1);
|
בגלל שabc שווה 0 ולא 10..
יענו בגלל שהוא לא קרא שום תא..
למה לעזאזל הוא לא קרא שום תא?