עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

קריאה מקובץ

Featured Replies

פורסם
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

const char *file1="a.txt";
const char *file2="b.txt";

int getNumber(const char *msg, int def)
{
char input[11];
cout << msg;
cin.getline(input, 10, '\n');
if (input[0] == '\0')
return def;
else
return atoi(input);
}

void ReadTextfile(const char *filename, int begin, int end)
{
string input;
ifstream file(filename);
int line = 0;

if (file.is_open())
{
while (!file.eof())
{
getline(file, input);
line++;
if ((begin == -1 || line >= begin) && (end == -1 || line <= end))
{
cout << input << endl;
}
}
}
file.close();
}

int main(void)
{
int fileNum = getNumber("Enter filename number to read (1 = a.txt, 2 = b.txt):", 1);
int begin = getNumber("Enter starting line number (-1 or nothing for start):", -1);
int end = getNumber("Enter ending line number (-1 or nothing for end):",-1);
ReadTextfile((fileNum == 1) ? file1 : file2, begin, end);
return 0;
}

פורסם
  • מחבר

תודה על ההסבר המפורט.

אפשר עוד שאלה(ות):

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

התכנית תעתיק רשומות מהקובץ הבינארי לקובץ בינארי חדש.

1. מה זה אומר שהקבצים בינארים?

2. איך מדפיסים לפי רשומות (כמו שורות בקובץ טקסט?)

3. איך מעתיקים מקובץ לקובץ?

4. אם אני כותבת משהו על המסך ורוצה שהוא ישמר לתוך קובץ. איך אני עושה את זה?

פורסם

1) הכוונה היא שלא שמורים בקובץ תווים רגילים של אותיות, אלא ערכים שמציינים תבנית מסויימת התוכנית מסויימת אמורה לקרוא. לדוגמא, הWORD יודע לפתוח קבצי DOC. אם תנסי לפתוח אותם עם NOTEPAD, את לא תביני מה רשום שם.

2) קודם את חייבת להכיר את מבנה הרשומה. יש לך אותו?

3) את יכולה להעתיק בייט בייט(או קבוצת בתים כל פעם) ולרשום אותם על הקובץ השני.

4) את זה את יכולה לבצע בצורה טקסטואלית, לא בינארית. כל אות או מחרוזת שאת קולטת מהמסך(ע"י getline) תכתבי לקובץ.

פורסם

דוגמה, לא הכי יעילה:

#include <iostream>
#include <fstream>

using namespace std;

struct person
{
char first_name[40];
char last_name[40];
int age;
bool isMale;
char additional[40];
};

void writeRecord(const char *name, person &record, bool isNew)
{
ofstream output;
if (isNew)
output.open(name, ios::binary | ios::trunc);
else
output.open(name, ios::binary | ios::out | ios::app);

output.write((char *)&record, sizeof(person));
output.close();
}

person readRecord(const char *name, int record)
{
person tmp;
ifstream input(name, ios::binary);
int cnt = 0;
while(input.read((char *)&tmp, sizeof(person)) && cnt != record)
cnt++;
if (cnt != record)
throw "no such record";
input.close();
return tmp;
}

int main(void)
{
person a;

strcpy(a.first_name, "alon");
strcpy(a.last_name, "mizrachi");
a.age = 6;
a.isMale = true;
strcpy(a.additional, "?");

writeRecord("data", a, true);

strcpy(a.first_name, "another");
strcpy(a.last_name, "one");
a.age = 1;
a.isMale = false;
strcpy(a.additional, "bites the dust");

writeRecord("data", a, false);

person b = readRecord("data",0);
printf("%s\n", b.first_name);

return 0;
}

פורסם
  • מחבר

אין לי את מבנה הרשומה. איך אני אמורה להכיר אותו אם אני לא יכולה לקרוא קובץ בינארי?

מצורפים הקבצים הבינארים מהם אני צריכה לקרוא.

את יכולה להעתיק בייט בייט(או קבוצת בתים כל פעם) ולרשום אותם על הקובץ השני.

איך עושים את זה? אילו פונקציות כותבות לתוך קובץ?

הקבצים:

[attachment deleted by admin]

פורסם

1) לגבי השאלה כיצד כותבים לקובץ, הפונקציה הינה write.

דוגמא (כפי שמופיעה בדוגמא האחרונה של Omniscience) :

output.write((char *)&record, sizeof(person));

2)לגבי שאלת ההעתקה מקובץ (להלן sourcefile ) לקובץ(להלן destinationfile):

דוגמא ע"י שימוש בפונ' writeRecord ו- readRecord מהדוגמא של Omniscience:

person b = readRecord("sourcefile",0); //read the first record from sourcefile 
writeRecord("destinationfile", b, true);//copy the record to the destinationfile

3)לגבי ההעתקה של פלט של המסך לקובץ:

מכיון שאת מדפיסה למסך משתנה כלשהו (יכול להיות רשומה, יכול להיות גם סתם טיפוס פשוט, כמו מספר שלם), אזי את יכולה לנתב את ערכו של אותו משתנה לכל אמצעי פלט שאת רוצה כגון קובץ, ואת זה את עושה ע"י השימוש בפונ' write הנ"ל.

אם נשתמש בדוגמא מסעיף 2 אז את הרשומה b (מטיפוס person) יכולת להדפיס למסך(ע"י הדפסת כל השדות המרכיבים אותה), ולשמור אותה לקובץ, בדיוק כמו בדוגמא.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.