ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
[email protected]Διδάσκων: Νίκος Παπασπύρου
http://www.softlab.ntua.gr/~nickie/TUC/log201/
1Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαφάνειες παρουσίασης #9
Διαχείριση αρχείων στην ANSI CΔιαχείριση αρχείων στο UnixΡοές δεδομένων εισόδου / εξόδου στη C++
2Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στην 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στην 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στην 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (iii)
Στοιχεία αρχείων <unistd.h>
int stat (const char * name, struct stat * s);
int fstat (int fd, struct stat * s);
Στοιχεία που μπορούν να διαβαστούν Χρήστης και ομάδα Τύπος αρχείου και δικαιώματα πρόσβασης Φυσική θέση στο σύστημα αρχείων Μέγεθος αρχείου Αριθμός σκληρών συνδέσμων Χρόνος τελευταίας αλλαγής ή πρόσβασης
8Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές δεδομένων στη C++ (i)
Οι λειτουργίες εισόδου / εξόδου στη C++ υλοποιούνται από κλάσεις της βιβλιοθήκης
Αρχείο επικεφαλίδων <iostream.h> Βασικοί τελεστές: >> και << Βασικές κλάσεις
Γενικές ροές εισόδου / εξόδουistream, ostream, iostream
Ροές αρχείων εισόδου / εξόδουifstream, ofstream, iofstream
Ροές εισόδου / εξόδου από συμβολοσειρέςistrstream, ostrstream, iostrstream
12Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές δεδομένων στη 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Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές εισόδου / εξόδου (i)
Προκαθορισμένες ροέςcout, cin, cerr, clog
Κλάση ostreamostream & operator << (ostream & s, T t);
ostream & put (char c);
ostream & write (const char * buf, int size);
ostream & flush ();
14Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές εισόδου / εξόδου (ii)
Κλάση istreamistream & 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);
Top Related