1 / 14

Διαφάνειες παρουσίασης #9

Διαφάνειες παρουσίασης #9. Διαχείριση αρχείων στην ANSI C Διαχείριση αρχείων στο Unix Ροές δεδομένων εισόδου / εξόδου στη C++. Διαχείριση αρχείων στην ANSI C (i). Βασικός τύπος <stdio.h> FILE * fp; δείκτης σε αρχείο Άνοιγμα & κλείσιμο αρχείων

basil
Download Presentation

Διαφάνειες παρουσίασης #9

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Διαφάνειες παρουσίασης #9 Διαχείριση αρχείων στην ANSI C Διαχείριση αρχείων στο Unix Ροές δεδομένων εισόδου / εξόδου στη C++

  2. Διαχείριση αρχείων στην ANSI C (i) • Βασικός τύπος <stdio.h> FILE * fp; δείκτης σε αρχείο • Άνοιγμα & κλείσιμο αρχείων FILE * fopen (const char * name, const char * mode); FILE * freopen (const char * name, const char * mode, FILE * oldf); FILE * fdopen (int fd, const char * mode); int fclose (FILE * fp); int fflush (FILE * fp);

  3. Διαχείριση αρχείων στην ANSI C (ii) • Ανάγνωση & εγγραφή int fputc (int c, FILE * fp); int fgetc (FILE * fp); int fputs (const char * s, FILE * fp); char * fgets (char * s, int n, FILE * fp); int fprintf (FILE * fp, const char * format, ...); int fscanf (FILE * fp, const char * format, ...);

  4. Διαχείριση αρχείων στην ANSI C (iii) • Ανάγνωση & εγγραφή δυαδικών δεδομένων size_t fwrite (const void * p,size_t size, size_t num, FILE * fp); size_t fread (void * p,size_t size, size_t num, FILE * fp); • Τέλος αρχείου int feof (FILE * fp); • Τυχαία προσπέλαση αρχείων int fseek (FILE * fp, long offset,int origin); long ftell (FILE * fp);

  5. Διαχείριση αρχείων στο Unix (i) • Βασικός τύπος <io.h> int fd; περιγραφή αρχείου (file descriptor) • Άνοιγμα αρχείων <fcntl.h> int open (const char * name, int mode, ...); int creat (const char * name, int mode); • Κλείσιμο αρχείων <unistd.h> int close (int fd);

  6. Διαχείριση αρχείων στο Unix (ii) • Ανάγνωση & εγγραφή <unistd.h> ssize_t write (int fd, const void * p, size_t size); ssize_t read (int fd, void * p, size_t size); • Τυχαία προσπέλαση αρχείων <unistd.h> off_t lseek (int fd, off_t pos,int whence); • Σκληροί σύνδεσμοι <unistd.h> int link (const char * cur_name, const char * new_name); int unlink (const char * cur_name);

  7. Διαχείριση αρχείων στο Unix (iii) • Στοιχεία αρχείων <unistd.h> int stat (const char * name, struct stat * s); int fstat (int fd, struct stat * s); • Στοιχεία που μπορούν να διαβαστούν • Χρήστης και ομάδα • Τύπος αρχείου και δικαιώματα πρόσβασης • Φυσική θέση στο σύστημα αρχείων • Μέγεθος αρχείου • Αριθμός σκληρών συνδέσμων • Χρόνος τελευταίας αλλαγής ή πρόσβασης

  8. Διαχείριση αρχείων στο Unix (iv) • Δικαιώματα πρόσβασης <unistd.h> int access (const char * name, int flag); int chmod (const char * name, mode_t flag); int fchmod (int fd, mode_t flag); • Χρήστης και ομάδα <unistd.h> int chown (const char * name, uid_t uid, gid_t gid); int fchown (int fd, uid_t uid, gid_t gid);

  9. Διαχείριση αρχείων στο Unix (v) • Συμβολικοί σύνδεσμοι <unistd.h> int symlink (const char * cur_name, const char * new_name); int readlink (const char * cur_name, char * buf, int size); • Δημιουργία καταλόγων <unistd.h> int mkdir (const char * name, mode_t mode);

  10. Διαχείριση αρχείων στο Unix (vi) • Διαχείριση καταλόγων <dirent.h> DIR * opendir (const char * name); int closedir (DIR * dir); struct dirent * readdir (DIR * dir); • Παράδειγμα: υλοποίηση εντολής ls DIR * dir = opendir ("/home/nickie"); struct dirent * dp; while ((dp = readdir (dir)) != NULL) printf("%s\n", dp->name); closedir(dir);

  11. Ροές δεδομένων στη C++ (i) • Οι λειτουργίες εισόδου / εξόδου στη C++ υλοποιούνται από κλάσεις της βιβλιοθήκης • Αρχείο επικεφαλίδων <iostream.h> • Βασικοί τελεστές: >> και << • Βασικές κλάσεις • Γενικές ροές εισόδου / εξόδου istream, ostream, iostream • Ροές αρχείων εισόδου / εξόδου ifstream, ofstream, iofstream • Ροές εισόδου / εξόδου από συμβολοσειρές istrstream, ostrstream, iostrstream

  12. Ροές δεδομένων στη C++ (ii) • Παράδειγμα #include <iostream.h> int main () { char login[10]; int code; cout << "login: "; cin >> login; cout << "code: "; cin >> code; cout << "You gave " << login << "and " << code << endl; return 0; }

  13. Ροές εισόδου / εξόδου (i) • Προκαθορισμένες ροές cout, cin, cerr, clog • Κλάση ostream ostream & operator << (ostream & s, T t); ostream & put (char c); ostream & write (const char * buf, int size); ostream & flush ();

  14. Ροές εισόδου / εξόδου (ii) • Κλάση istream istream & operator >> (ostream & s, T & t); istream & get (char & c); int get (); istream & read (char * buf, int size); istream & getline (char * buf, int size, char delim = '\n'); int peek (); istream & putback (char c);

More Related