PDA

צפייה בגרסה מלאה : מדריך קבצים בינאריים (Binary Files) בשפת C



Tamir
06-09-2024, 11:19 PM
קבצים בינאריים (Binary Files) בשפת C


קבצים בינאריים (Binary Files) הם קבצים שבהם הנתונים מאוחסנים בצורה בינארית, כלומר בפורמט שאינו טקסטואלי. הם מאפשרים אחסון וקריאה של נתונים בצורה מדויקת ויעילה יותר מאשר קבצי טקסט, במיוחד כשמדובר בנתונים מורכבים או גדולים.


פתיחת קובץ בינארי


כדי לפתוח קובץ בינארי, יש להשתמש במצב הפתיחה `"rb"` לקריאה או `"wb"` לכתיבה. בנוסף, ניתן להשתמש במצב `"ab"` להוספת נתונים בסוף הקובץ.



c
#include <stdio.h>


int main() {
FILE *file;


// פתיחת קובץ בינארי לקריאה
file = fopen("example.bin", "rb");


if (file == NULL) {
printf("Error opening file\n");
return 1;
}


// סגירת הקובץ לאחר השימוש
fclose(file);
return 0;
}



כתיבה לקובץ בינארי


לכתיבה של נתונים לקובץ בינארי, ניתן להשתמש בפונקציה `fwrite`:



c
#include <stdio.h>


int main() {
FILE *file;
int data = 12345;


// פתיחת קובץ בינארי לכתיבה
file = fopen("example.bin", "wb");


if (file == NULL) {
printf("Error opening file\n");
return 1;
}


// כתיבה של נתון לקובץ
fwrite(&data, sizeof(data), 1, file);


// סגירת הקובץ לאחר השימוש
fclose(file);
return 0;
}



קריאה מקובץ בינארי


לקריאה של נתונים מקובץ בינארי, ניתן להשתמש בפונקציה `fread`:



c
#include <stdio.h>


int main() {
FILE *file;
int data;


// פתיחת קובץ בינארי לקריאה
file = fopen("example.bin", "rb");


if (file == NULL) {
printf("Error opening file\n");
return 1;
}


// קריאה של נתון מהקובץ
fread(&data, sizeof(data), 1, file);


printf("Data read from file: %d\n", data);


// סגירת הקובץ לאחר השימוש
fclose(file);
return 0;
}



כתיבה וקריאה של מבנים (Structures)


ניתן לכתוב ולקרוא מבנים (structures) לקובץ בינארי באותה שיטה שבה אנו עובדים עם משתנים פשוטים. לדוגמה, נכתוב ונקרא מבנה המכיל מספרים ותווים:



c
#include <stdio.h>
#include <string.h>


struct Person {
char name[50];
int age;
};


int main() {
FILE *file;
struct Person person = {"Alice", 30};


// כתיבה לקובץ בינארי
file = fopen("person.bin", "wb");


if (file == NULL) {
printf("Error opening file\n");
return 1;
}


fwrite(&person, sizeof(person), 1, file);
fclose(file);


// קריאה מהקובץ
file = fopen("person.bin", "rb");


if (file == NULL) {
printf("Error opening file\n");
return 1;
}


struct Person readPerson;
fread(&readPerson, sizeof(readPerson), 1, file);


printf("Name: %s\n", readPerson.name);
printf("Age: %d\n", readPerson.age);


fclose(file);
return 0;
}



שימושים נוספים


- קביעת המיקום בקובץ: ניתן להשתמש בפונקציות `fseek` ו-`ftell` כדי לקבוע את המיקום הנוכחי של הקריאה/כתיבה בקובץ.
- הוספת נתונים לקובץ בינארי: ניתן לפתוח קובץ בינארי במצב `"ab"` כדי להוסיף נתונים בסוף הקובץ.


סיכום


במדריך זה למדנו על קבצים בינאריים בשפת C, כולל פתיחה, כתיבה, קריאה, עבודה עם מבנים, וקביעת המיקום בקובץ. קבצים בינאריים הם כלי עוצמתי לניהול נתונים בצורה מדויקת ויעילה.


אם יש לכם שאלות נוספות או שאתם זקוקים לעזרה נוספת, אתם מוזמנים לשאול! ?