SlideShare a Scribd company logo
1 of 3
‫עבודה עם קבצים‬

                                                                                         ‫יצירת מבנה:‬
                                                    ‫קבצים בנויים מבלוקים בעלי גודל, מבנה וטיפוס זהים.‬
                                                  ‫ע"מ ליצור מבנה שכזה נבצע הגדרה באופן הבא לדוגמה:‬

‫‪typedef struct‬‬
‫{‬
     ‫;‪int numeric‬‬
     ‫;]‪char stringname[stringsize‬‬
‫; ‪} ITEM‬‬

                                                                               ‫הכנסת מבנה לקובץ:‬
       ‫פונקצית הכנסה המקבלת מצביע לקובץ, בתוכה ניצור מבנה זמני, נבצע השמה לתוך המבנה (לדוגמה, קלט‬
                                                                 ‫מהמשתמש) ונכתוב את המבנה לקובץ:‬

‫)‪void insert (FILE* file‬‬
‫{‬
     ‫;‪ITEM itemname‬‬

     ‫;)‪scanf ("%s",itemname.stringname‬‬
     ‫;)‪scanf ("%d",&itemname.numeric‬‬

     ‫;)‪fwrite (&itemname, sizeof(ITEM), 1, file‬‬
‫}‬

                                                                                 ‫חיפוש מבנה בקובץ:‬
                             ‫פונקצית חיפוש המקבלת מצביע לקובץ, נגדיר משתנה זמני לפיו נחפש בקובץ,‬
    ‫היות ומיקום ה"סמן" לא ידוע וברצוננו לחפש בקובץ מתחילתו, עלינו "להריץ" את הקובץ להתחלה ולחפש משם:‬

‫)‪int search (FILE* file‬‬
‫{‬
     ‫;‪ITEM itemname‬‬
     ‫;]‪char stringname[stringsize‬‬

     ‫;)‪rewind(file‬‬
     ‫;)‪scanf("%s",stringname‬‬

     ‫))‪while (fread(&itemname, sizeof(ITEM), 1, file‬‬
     ‫{‬
           ‫))‪if (!strcmp(itemname.stringname,stringname‬‬
           ‫{‬
                ‫;)"‪printf("Item Found!n‬‬
                ‫;1 ‪return‬‬
           ‫}‬
     ‫}‬
‫;)"‪printf("Item not Found!n‬‬
‫;0 ‪return‬‬
‫}‬
:‫הסרת מבנה מקובץ‬
‫פונקצית מחיקה המקבלת מצביע לקובץ, בתחילה יש לשמור את הרשומה האחרונה בקובץ במבנה זמני, לבצע חיפוש‬
     .‫של הרשומה להסרה, לכתוב עליה את הרשומה מהמבנה הזמני, ולקצר את אורך הקובץ ברשומה אחת מהסוף‬

int remove (FILE* file)
{
     ITEM itemname,last_itemname;
     char stringname[stringsize];
     HANDLE filehandle; // an handle to file which can have its EOF changed.

      fseek(file,-(sizeof(ITEM)),SEEK_END);
      fread(&last_itemname,sizeof(ITEM),1,file);

      rewind (file);

      scanf("%s",stringname);

      while(fread(&itemname, sizeof(ITEM), 1, file))
      {
           if (!strcmp(itemname.stringname,stringname))
           {
                 fseek(file,-(sizeof(ITEM)),SEEK_CUR);
                 fwrite(&last_itemname,sizeof(ITEM),1,file);
                 fseek(file,-(sizeof(ITEM)),SEEK_END);

                   fclose(file);

                   filehandle=CreateFile(L"D:file.$$$",GENERIC_WRITE |
                   GENERIC_READ,0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);

                   SetFilePointer(filehandle,-sizeof(ITEM),NULL,FILE_END);
                   SetEndOfFile(filehandle);
                   CloseHandle(fliehandle);

                   file=fopen("D:file.$$$","rb+");

                   printf("Item Removed!n");

                   return 1;
             }
     }
printf("Item not Found!n");
return 0;
}
:‫עדכון הקובץ‬
         :‫פונקצית עדכון המקבלת מצביע לקובץ, בעזרת פונקצית החיפוש, מוצאת את הרשומה ולבסוף מעדכנת‬

int update (FILE* file)
{
     ITEM itemname;

     rewind(file);

          if(search(file))
          {
               fseek(file,-sizeof(ITEM),SEEK_CUR);
               fread(&itemname,sizeof(ITEM),1,file);
               printf("insert new numericn");
               scanf("%d",&(itemname.numeric));
               fseek(file,-sizeof(ITEM),SEEK_CUR);
               fwrite(&itemname,sizeof(ITEM),1,file);

                 printf("Item Updated!n");
                 return 1;
           }
printf("Item not Found!n");
return 0;
}

                                                                                 :‫הדפסת הקובץ‬
               :‫פונקצית הדפסה המקבלת מצביע לקובץ ומדפיסה רשומה-רשומה, כל עוד לא הגיע סוף הקובץ‬

void print(FILE* file)
{
     ITEM itemname;

     rewind(file);

     while (fread(&itemname, sizeof(ITEM), 1, file))
     {
          printf("%s %dn",itemname.stringname,itemname.numeric);
     }
}
                                     .‫הפרוצדורה הראשית: יצירת קובץ, קריאה לפונקציות וסגירת הקובץ‬
void main ()
{
     FILE* file = NULL;
     if (!file=fopen("D:file.$$$","wb+"))
           printf("An Error Occurred!"); return;
     insert(file);
     search(file);
     remove(file);
     print(file);
     update(file);
     fclose(file);
}

More Related Content

Viewers also liked

Viewers also liked (8)

Raccolta poesie 3B seconda parte
Raccolta poesie 3B seconda parteRaccolta poesie 3B seconda parte
Raccolta poesie 3B seconda parte
 
2009 Emerging Media Presentation 4 09 London
2009 Emerging Media Presentation 4 09 London2009 Emerging Media Presentation 4 09 London
2009 Emerging Media Presentation 4 09 London
 
Nevada Energy Reno
Nevada Energy RenoNevada Energy Reno
Nevada Energy Reno
 
Looking for jesus_wordsearch
Looking for jesus_wordsearchLooking for jesus_wordsearch
Looking for jesus_wordsearch
 
Forums and social media marketing
Forums and social media marketingForums and social media marketing
Forums and social media marketing
 
מצגת לוגיקה מלאה חלק 1 מתוך 3
מצגת לוגיקה מלאה חלק 1 מתוך 3מצגת לוגיקה מלאה חלק 1 מתוך 3
מצגת לוגיקה מלאה חלק 1 מתוך 3
 
1-1 Excluidos y rel especiales
1-1 Excluidos y rel especiales1-1 Excluidos y rel especiales
1-1 Excluidos y rel especiales
 
1-1 Derecho laboral
1-1 Derecho laboral1-1 Derecho laboral
1-1 Derecho laboral
 

More from מורן אלקובי

ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות
ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונותג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות
ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונותמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - ממשקים
ג'אווה - תכנות מונחה עצמים - ממשקיםג'אווה - תכנות מונחה עצמים - ממשקים
ג'אווה - תכנות מונחה עצמים - ממשקיםמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיות
ג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיותג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיות
ג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיותמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטהג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטהמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...מורן אלקובי
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםמורן אלקובי
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםמורן אלקובי
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualמורן אלקובי
 
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותבדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותמורן אלקובי
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותמורן אלקובי
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותמורן אלקובי
 

More from מורן אלקובי (20)

Java - OOP - Exceptions Handling
Java - OOP - Exceptions HandlingJava - OOP - Exceptions Handling
Java - OOP - Exceptions Handling
 
ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיות
 
ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות
ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונותג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות
ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות
 
ג'אווה - תכנות מונחה עצמים - ממשקים
ג'אווה - תכנות מונחה עצמים - ממשקיםג'אווה - תכנות מונחה עצמים - ממשקים
ג'אווה - תכנות מונחה עצמים - ממשקים
 
ג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיות
ג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיותג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיות
ג'אווה - תכנות מונחה עצמים - מחלקות פנימיות - רגילות, אנונימיות וסטטיות
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשה
 
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
 
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטהג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
 
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
 
MySQL - מילון השאילתא
MySQL - מילון השאילתאMySQL - מילון השאילתא
MySQL - מילון השאילתא
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
 
SQL - מודל הנתונים
SQL - מודל הנתוניםSQL - מודל הנתונים
SQL - מודל הנתונים
 
SQL - אלגברה של יחסים
SQL - אלגברה של יחסיםSQL - אלגברה של יחסים
SQL - אלגברה של יחסים
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשרים
 
MySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתאMySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתא
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
 
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותבדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקות
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקות
 

עבודה עם קבצים בשפת סי

  • 1. ‫עבודה עם קבצים‬ ‫יצירת מבנה:‬ ‫קבצים בנויים מבלוקים בעלי גודל, מבנה וטיפוס זהים.‬ ‫ע"מ ליצור מבנה שכזה נבצע הגדרה באופן הבא לדוגמה:‬ ‫‪typedef struct‬‬ ‫{‬ ‫;‪int numeric‬‬ ‫;]‪char stringname[stringsize‬‬ ‫; ‪} ITEM‬‬ ‫הכנסת מבנה לקובץ:‬ ‫פונקצית הכנסה המקבלת מצביע לקובץ, בתוכה ניצור מבנה זמני, נבצע השמה לתוך המבנה (לדוגמה, קלט‬ ‫מהמשתמש) ונכתוב את המבנה לקובץ:‬ ‫)‪void insert (FILE* file‬‬ ‫{‬ ‫;‪ITEM itemname‬‬ ‫;)‪scanf ("%s",itemname.stringname‬‬ ‫;)‪scanf ("%d",&itemname.numeric‬‬ ‫;)‪fwrite (&itemname, sizeof(ITEM), 1, file‬‬ ‫}‬ ‫חיפוש מבנה בקובץ:‬ ‫פונקצית חיפוש המקבלת מצביע לקובץ, נגדיר משתנה זמני לפיו נחפש בקובץ,‬ ‫היות ומיקום ה"סמן" לא ידוע וברצוננו לחפש בקובץ מתחילתו, עלינו "להריץ" את הקובץ להתחלה ולחפש משם:‬ ‫)‪int search (FILE* file‬‬ ‫{‬ ‫;‪ITEM itemname‬‬ ‫;]‪char stringname[stringsize‬‬ ‫;)‪rewind(file‬‬ ‫;)‪scanf("%s",stringname‬‬ ‫))‪while (fread(&itemname, sizeof(ITEM), 1, file‬‬ ‫{‬ ‫))‪if (!strcmp(itemname.stringname,stringname‬‬ ‫{‬ ‫;)"‪printf("Item Found!n‬‬ ‫;1 ‪return‬‬ ‫}‬ ‫}‬ ‫;)"‪printf("Item not Found!n‬‬ ‫;0 ‪return‬‬ ‫}‬
  • 2. :‫הסרת מבנה מקובץ‬ ‫פונקצית מחיקה המקבלת מצביע לקובץ, בתחילה יש לשמור את הרשומה האחרונה בקובץ במבנה זמני, לבצע חיפוש‬ .‫של הרשומה להסרה, לכתוב עליה את הרשומה מהמבנה הזמני, ולקצר את אורך הקובץ ברשומה אחת מהסוף‬ int remove (FILE* file) { ITEM itemname,last_itemname; char stringname[stringsize]; HANDLE filehandle; // an handle to file which can have its EOF changed. fseek(file,-(sizeof(ITEM)),SEEK_END); fread(&last_itemname,sizeof(ITEM),1,file); rewind (file); scanf("%s",stringname); while(fread(&itemname, sizeof(ITEM), 1, file)) { if (!strcmp(itemname.stringname,stringname)) { fseek(file,-(sizeof(ITEM)),SEEK_CUR); fwrite(&last_itemname,sizeof(ITEM),1,file); fseek(file,-(sizeof(ITEM)),SEEK_END); fclose(file); filehandle=CreateFile(L"D:file.$$$",GENERIC_WRITE | GENERIC_READ,0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); SetFilePointer(filehandle,-sizeof(ITEM),NULL,FILE_END); SetEndOfFile(filehandle); CloseHandle(fliehandle); file=fopen("D:file.$$$","rb+"); printf("Item Removed!n"); return 1; } } printf("Item not Found!n"); return 0; }
  • 3. :‫עדכון הקובץ‬ :‫פונקצית עדכון המקבלת מצביע לקובץ, בעזרת פונקצית החיפוש, מוצאת את הרשומה ולבסוף מעדכנת‬ int update (FILE* file) { ITEM itemname; rewind(file); if(search(file)) { fseek(file,-sizeof(ITEM),SEEK_CUR); fread(&itemname,sizeof(ITEM),1,file); printf("insert new numericn"); scanf("%d",&(itemname.numeric)); fseek(file,-sizeof(ITEM),SEEK_CUR); fwrite(&itemname,sizeof(ITEM),1,file); printf("Item Updated!n"); return 1; } printf("Item not Found!n"); return 0; } :‫הדפסת הקובץ‬ :‫פונקצית הדפסה המקבלת מצביע לקובץ ומדפיסה רשומה-רשומה, כל עוד לא הגיע סוף הקובץ‬ void print(FILE* file) { ITEM itemname; rewind(file); while (fread(&itemname, sizeof(ITEM), 1, file)) { printf("%s %dn",itemname.stringname,itemname.numeric); } } .‫הפרוצדורה הראשית: יצירת קובץ, קריאה לפונקציות וסגירת הקובץ‬ void main () { FILE* file = NULL; if (!file=fopen("D:file.$$$","wb+")) printf("An Error Occurred!"); return; insert(file); search(file); remove(file); print(file); update(file); fclose(file); }