1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> ΟΜΙΛΗΤΗΣ: Μέχρι στιγμής, είναι πιθανό ότι τα περισσότερα από τα προγράμματά σας 3 00:00:07,870 --> 00:00:10,170 να ήταν λίγο εφήμερο. 4 00:00:10,170 --> 00:00:13,310 Μπορείτε να εκτελέσετε ένα πρόγραμμα όπως το Mario ή άπληστοι. 5 00:00:13,310 --> 00:00:17,350 Κάνει κάτι, ίσως ζητά ο χρήστης για κάποιες πληροφορίες, 6 00:00:17,350 --> 00:00:20,400 εκτυπώσετε κάποια έξοδος στην οθόνη, αλλά στη συνέχεια, όταν το πρόγραμμά σας είναι πάνω, 7 00:00:20,400 --> 00:00:23,252 δεν υπάρχει πραγματικά καμία απόδειξη υπάρχει είχε τρέξει ποτέ στην πρώτη θέση. 8 00:00:23,252 --> 00:00:25,960 Θέλω να πω, σίγουρα, θα μπορούσε να είχε αφήσει να ανοίξει το παράθυρο του τερματικού, 9 00:00:25,960 --> 00:00:29,770 αλλά αν καταργήσετε την οθόνη σας, υπάρχει Πραγματικά, δεν υπάρχει απόδειξη ότι υπήρχε. 10 00:00:29,770 --> 00:00:33,720 Δεν έχουμε ένα μέσο αποθήκευσης επίμονες πληροφορίες, πληροφορίες 11 00:00:33,720 --> 00:00:36,890 ότι υπάρχει μετά μας το πρόγραμμα έχει σταματήσει να τρέχει, 12 00:00:36,890 --> 00:00:39,241 ή δεν έχουμε μέχρι αυτό το σημείο. 13 00:00:39,241 --> 00:00:41,490 Ευτυχώς όμως, γ κάνει μας δίνουν τη δυνατότητα 14 00:00:41,490 --> 00:00:44,220 για να το κάνετε αυτό με την εφαρμογή κάτι που ονομάζεται 15 00:00:44,220 --> 00:00:48,330 ένα αρχείο, μια δομή που ουσιαστικά αντιπροσωπεύει ένα αρχείο που θα διπλασιαστεί 16 00:00:48,330 --> 00:00:53,826 κάντε κλικ στον υπολογιστή σας, αν είστε που χρησιμοποιούνται σε ένα γραφικό περιβάλλον χρήστη. 17 00:00:53,826 --> 00:00:55,700 Γενικά, όταν εργάζονται με c, στην πραγματικότητα είμαστε 18 00:00:55,700 --> 00:00:59,965 πρόκειται να εργάζονται με δείκτες για να files-- αρχείο stars-- 19 00:00:59,965 --> 00:01:02,090 εκτός για λίγο όταν μιλάμε για ένα ζευγάρι 20 00:01:02,090 --> 00:01:04,560 από τις λειτουργίες που συνεργαστεί με δείκτες αρχείο. 21 00:01:04,560 --> 00:01:08,990 Δεν χρειάζεται να έχουν πραγματικά σκάψει πάρα πολύ βαθιά στην κατανόηση δείκτες 22 00:01:08,990 --> 00:01:09,730 οι ίδιοι. 23 00:01:09,730 --> 00:01:12,870 Υπάρχει μια μικρή teeny λίγο όπου θα μιλήσουμε γι 'αυτούς, 24 00:01:12,870 --> 00:01:18,090 αλλά γενικά το αρχείο δείκτες και δείκτες, ενώ αλληλένδετα, 25 00:01:18,090 --> 00:01:20,290 Δεν είναι ακριβώς το ίδιο πράγμα. 26 00:01:20,290 --> 00:01:22,440 >> Τώρα τι εννοώ όταν Λέω επίμονη δεδομένα; 27 00:01:22,440 --> 00:01:23,650 Τι είναι η επίμονη δεδομένα; 28 00:01:23,650 --> 00:01:25,232 Γιατί μας νοιάζει γι 'αυτό; 29 00:01:25,232 --> 00:01:27,190 Ας πούμε, για παράδειγμα, ότι τρέχετε ένα πρόγραμμα 30 00:01:27,190 --> 00:01:29,850 ή έχετε ένα ξαναγραφεί πρόγραμμα το οποίο είναι ένα παιχνίδι, 31 00:01:29,850 --> 00:01:32,960 και θέλετε να παρακολουθείτε όλων των κινήσεων του χρήστη 32 00:01:32,960 --> 00:01:36,620 έτσι ώστε ίσως αν κάτι πάει στραβά, μπορείτε να ελέγξετε το αρχείο μετά το παιχνίδι. 33 00:01:36,620 --> 00:01:39,970 Αυτό είναι που εννοούμε όταν μιλήσουμε για επίμονη δεδομένα. 34 00:01:39,970 --> 00:01:43,930 >> Κατά τη διάρκεια της λειτουργίας σας προγράμματος, δημιουργείται ένα αρχείο. 35 00:01:43,930 --> 00:01:45,680 Και όταν το πρόγραμμά σας έχει σταματήσει να τρέχει, 36 00:01:45,680 --> 00:01:48,689 ότι εξακολουθεί να υπάρχει το αρχείο στο σύστημά σας. 37 00:01:48,689 --> 00:01:50,230 Και μπορούμε να το κοιτάξετε και να την εξετάσει. 38 00:01:50,230 --> 00:01:53,670 Και έτσι το πρόγραμμα αυτό θα πρέπει να οριστεί σε έχουν δημιουργήσει κάποια σταθερά δεδομένα, 39 00:01:53,670 --> 00:01:57,390 υπάρχουν δεδομένα μετά το πρόγραμμα έχει ολοκληρωθεί η εκτέλεση. 40 00:01:57,390 --> 00:02:02,320 >> Τώρα όλες αυτές τις λειτουργίες που λειτουργούν με τη δημιουργία αρχείων και το χειρισμό 41 00:02:02,320 --> 00:02:04,940 τους με διάφορους τρόπους ζουν στο πρότυπο io.h, 42 00:02:04,940 --> 00:02:08,210 το οποίο είναι ένα αρχείο κεφαλίδας που έχετε πιθανόν ήταν λίρα 43 00:02:08,210 --> 00:02:10,910 συμπεριλαμβανομένου στην κορυφή της πολύ πολύ όλα τα προγράμματά σας 44 00:02:10,910 --> 00:02:14,130 επειδή περιέχει ένα από τα πιο χρήσιμες λειτουργίες για μας, 45 00:02:14,130 --> 00:02:16,130 printf, η οποία σας επιτρέπει επίσης Ζει στο πρότυπο io.h. 46 00:02:16,130 --> 00:02:20,400 Έτσι, δεν χρειάζεται να σφυροκοπήσει περιλαμβάνουν τυχόν πρόσθετα αρχεία πιθανώς 47 00:02:20,400 --> 00:02:23,540 προκειμένου να συνεργαστεί με τους δείκτες αρχείο. 48 00:02:23,540 --> 00:02:29,980 >> Τώρα, κάθε λειτουργία δείκτης του αρχείου, ή κάθε αρχείο I / O, εισόδου-εξόδου 49 00:02:29,980 --> 00:02:33,310 λειτουργία, δέχεται ως μία τις παραμέτρους ή τις εισόδους του 50 00:02:33,310 --> 00:02:35,822 pointer-- ένα αρχείο, εκτός για ένα, fopen, η οποία 51 00:02:35,822 --> 00:02:38,280 είναι ό, τι μπορείτε να χρησιμοποιήσετε για να πάρετε το αρχείο δείκτη στην πρώτη θέση. 52 00:02:38,280 --> 00:02:41,010 Αλλά αφού έχετε ανοίξει το αρχείο και μπορείτε να πάρετε το αρχείο δείκτες, 53 00:02:41,010 --> 00:02:43,510 μπορείτε στη συνέχεια να τους περάσει ως επιχειρήματα για τις διάφορες λειτουργίες 54 00:02:43,510 --> 00:02:46,720 θα πάμε να μιλήσουμε για σήμερα, καθώς επίσης και πολλοί άλλοι 55 00:02:46,720 --> 00:02:48,520 έτσι ώστε να μπορείτε να εργαστείτε με τα αρχεία. 56 00:02:48,520 --> 00:02:50,980 >> Έτσι, υπάρχουν έξι πολύ κοινά βασικά μέτρα 57 00:02:50,980 --> 00:02:52,870 ότι θα πάμε να μιλήσουμε σήμερα. 58 00:02:52,870 --> 00:02:57,160 fopen και σύντροφος του fclose λειτουργία, fgetc 59 00:02:57,160 --> 00:03:02,670 και τη λειτουργία σύντροφος fputc του, και fread και τη λειτουργία σύντροφό του, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Έτσι, ας πάμε σε αυτό. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- τι κάνει; 63 00:03:07,050 --> 00:03:10,050 Λοιπόν, ανοίγει ένα αρχείο και σας δίνει ένα δείκτη αρχείου για να το, 64 00:03:10,050 --> 00:03:14,000 έτσι ώστε να μπορείτε να χρησιμοποιήσετε στη συνέχεια ότι αρχείο δείκτη ως επιχείρημα 65 00:03:14,000 --> 00:03:16,730 προς οποιοδήποτε άλλο αρχείο I / O λειτουργίες. 66 00:03:16,730 --> 00:03:19,100 Το πιο σημαντικό πράγμα για να θυμούνται με fopen 67 00:03:19,100 --> 00:03:24,222 είναι ότι αφού έχετε ανοίξει το file ή να κάνει μια κλήση, όπως αυτή εδώ, 68 00:03:24,222 --> 00:03:26,930 θα πρέπει να ελέγξετε για να βεβαιωθείτε ότι ότι ο δείκτης που έχεις πίσω 69 00:03:26,930 --> 00:03:28,320 δεν είναι ίση με null. 70 00:03:28,320 --> 00:03:31,320 Αν δεν έχετε παρακολουθήσει το βίντεο δείκτες, αυτό δεν μπορούσε να έχει νόημα. 71 00:03:31,320 --> 00:03:35,639 Αλλά αν προσπαθήσετε και dereference ένα κενό δείκτη ανάκληση, 72 00:03:35,639 --> 00:03:38,180 το πρόγραμμά σας κατά πάσα πιθανότητα θα υποφέρουν α τμηματοποίησης [δεν ακούγεται]. 73 00:03:38,180 --> 00:03:40,540 Θέλουμε να βεβαιωθούμε ότι θα πήρε ένα νόμιμο δείκτη πίσω. 74 00:03:40,540 --> 00:03:43,665 Η συντριπτική πλειοψηφία του χρόνου θα έχουμε έχουν πάρει ένα νόμιμο δείκτη πίσω 75 00:03:43,665 --> 00:03:45,280 και δεν θα είναι ένα πρόβλημα. 76 00:03:45,280 --> 00:03:46,760 >> Λοιπόν, πώς θα κάνουμε μια πρόσκληση για fopen; 77 00:03:46,760 --> 00:03:48,051 Φαίνεται λίγο πολύ σαν αυτό. 78 00:03:48,051 --> 00:03:52,690 Αστέρι αρχείου ptr-- PTR είναι ένα γενικό όνομα για το αρχείο pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 και περνάμε σε δύο πράγματα, ένα όνομα αρχείου και μια λειτουργία που θέλουμε να αναλάβουμε. 80 00:03:57,300 --> 00:04:01,690 Έτσι, θα μπορούσαμε να έχουμε μια κλήση που μοιάζει με this-- ptr αστέρων αρχείων 1 ισούται με fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Και η λειτουργία που έχω επιλέξει είναι r. 83 00:04:07,020 --> 00:04:08,639 >> Λοιπόν, τι νομίζεις ότι r είναι εδώ; 84 00:04:08,639 --> 00:04:11,180 Ποια είναι τα είδη των πραγμάτων που μπορεί να είναι σε θέση να κάνει με τα αρχεία; 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Έτσι, το r είναι η εργασία που θα επιλέγουν πότε θέλουμε να διαβάσουμε ένα αρχείο. 87 00:04:17,500 --> 00:04:20,260 Γι 'αυτό και θα ήταν ουσιαστικά όταν κάνουμε μια κλήση όπως αυτό 88 00:04:20,260 --> 00:04:25,440 να πάρει τον εαυτό μας ένα δείκτη αρχείο έτσι ώστε να μπορούμε στη συνέχεια να διαβάσει πληροφορίες 89 00:04:25,440 --> 00:04:27,770 από file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Ομοίως, θα μπορούσαμε να ανοίξουμε το αρχείο 2.txt για τη σύνταξη και έτσι μπορούμε να περάσουμε pTR2, 91 00:04:34,190 --> 00:04:38,210 ο δείκτης του αρχείου που έχω δημιουργήσει εδώ, ως επιχείρημα για κάθε λειτουργία που 92 00:04:38,210 --> 00:04:40,080 γράφει τις πληροφορίες σε ένα αρχείο. 93 00:04:40,080 --> 00:04:43,767 Και παρόμοιο με το γράψιμο, υπάρχει επίσης η επιλογή να προσθέσει ένα. 94 00:04:43,767 --> 00:04:45,600 Η διαφορά μεταξύ γραφή και προσαρτώντας 95 00:04:45,600 --> 00:04:50,920 είναι ότι όταν γράφετε σε ένα αρχείο, αν κάνετε μια κλήση για να fopen για το γράψιμο 96 00:04:50,920 --> 00:04:54,761 και αυτό το αρχείο υπάρχει ήδη, είναι πρόκειται να αντικαταστήσετε ολόκληρο το αρχείο. 97 00:04:54,761 --> 00:04:56,510 Είναι πρόκειται να ξεκινήσει στην αρχή, 98 00:04:56,510 --> 00:04:58,820 διαγράφοντας όλες τις πληροφορίες ότι είναι ήδη εκεί. 99 00:04:58,820 --> 00:05:02,210 >> Ενώ αν το ανοίξετε για προσάρτηση, θα πάτε στο τέλος του αρχείου 100 00:05:02,210 --> 00:05:04,340 αν υπάρχει ήδη στο κείμενο αυτό ή πληροφορίες σε αυτό, 101 00:05:04,340 --> 00:05:06,040 και στη συνέχεια θα αρχίσει εγγράφως από εκεί. 102 00:05:06,040 --> 00:05:08,570 Έτσι δεν θα χάσετε καμία από τις πληροφορίες που έχετε κάνει στο παρελθόν. 103 00:05:08,570 --> 00:05:12,110 Είτε θέλετε να γράψετε ή να επισυνάψει το είδος της εξαρτάται από την κατάσταση. 104 00:05:12,110 --> 00:05:16,840 Αλλά θα πρέπει πιθανώς να ξέρετε ποια είναι η σωστή λειτουργία είναι, όταν έρθει η ώρα. 105 00:05:16,840 --> 00:05:18,020 Έτσι ώστε να είναι fopen. 106 00:05:18,020 --> 00:05:18,930 >> Τι γίνεται με fclose; 107 00:05:18,930 --> 00:05:21,600 Λοιπόν, αρκετά απλά, fclose απλώς αποδέχεται το δείκτη αρχείου. 108 00:05:21,600 --> 00:05:24,000 Και όπως μπορείτε να φανταστείτε, κλείνει το αρχείο. 109 00:05:24,000 --> 00:05:29,270 Και από τη στιγμή που έχουμε κλείσει ένα αρχείο, δεν μπορούμε εκτελούν πια αρχείο λειτουργίες I / O, 110 00:05:29,270 --> 00:05:31,420 ανάγνωση ή την εγγραφή, στο αρχείο αυτό. 111 00:05:31,420 --> 00:05:36,444 Πρέπει να ανοίξει εκ νέου η αρχείο κάποια άλλη στιγμή, προκειμένου 112 00:05:36,444 --> 00:05:38,610 να συνεχίσει να εργάζεται με χρησιμοποιώντας τις λειτουργίες I / O. 113 00:05:38,610 --> 00:05:41,520 Έτσι fclose μέσα τελειώσαμε που εργάζονται με αυτό το αρχείο. 114 00:05:41,520 --> 00:05:44,690 Και το μόνο που χρειάζεται για να περάσει in είναι το όνομα του δείκτη αρχείου. 115 00:05:44,690 --> 00:05:50,010 Έτσι, σε ένα ζευγάρι διαφάνειες πριν, fopened αρχείο 1 τελεία κειμένου για την ανάγνωση 116 00:05:50,010 --> 00:05:52,854 και βάλαμε ότι αρχείο δείκτη σε ρΤΡ1. 117 00:05:52,854 --> 00:05:55,020 Τώρα έχουμε αποφασίσει είμαστε τελειώσετε την ανάγνωση από το αρχείο. 118 00:05:55,020 --> 00:05:56,561 Εμείς δεν χρειάζεται να κάνουμε πια με αυτό. 119 00:05:56,561 --> 00:05:58,890 Μπορούμε απλά fclose ρΤΡ1. 120 00:05:58,890 --> 00:06:01,950 Και ομοίως, θα μπορούσαμε fclose τις άλλες. 121 00:06:01,950 --> 00:06:02,450 Εντάξει. 122 00:06:02,450 --> 00:06:03,700 Έτσι ώστε να είναι το άνοιγμα και το κλείσιμο. 123 00:06:03,700 --> 00:06:05,780 Αυτοί είναι οι δύο βασικές την έναρξη των ενεργειών. 124 00:06:05,780 --> 00:06:08,050 >> Τώρα θέλουμε πραγματικά να κάνετε κάποια ενδιαφέροντα πράγματα, 125 00:06:08,050 --> 00:06:11,940 και η πρώτη λειτουργία που θα δείτε ότι θα κάνει ότι είναι fgetc-- 126 00:06:11,940 --> 00:06:14,110 αρχείο πάρει ένα χαρακτήρα. 127 00:06:14,110 --> 00:06:17,350 Αυτό είναι ό, τι γενικά fgetc θα μεταφραστεί σε. 128 00:06:17,350 --> 00:06:20,190 Ο στόχος του στη ζωή είναι να διαβάστε τον επόμενο χαρακτήρα, 129 00:06:20,190 --> 00:06:22,079 ή αν αυτό είναι πολύ σας πρώτη κλήση fgetc 130 00:06:22,079 --> 00:06:23,870 για ένα συγκεκριμένο αρχείο, ο πρώτος χαρακτήρας. 131 00:06:23,870 --> 00:06:26,210 Στη συνέχεια, όμως μετά από αυτό, μπορείτε να πάρετε το επόμενο, 132 00:06:26,210 --> 00:06:31,500 την επόμενη κιόλας χαρακτήρα αυτού του αρχείου, και την αποθηκεύει σε μια μεταβλητή χαρακτήρα. 133 00:06:31,500 --> 00:06:34,490 Όπως έχουμε κάνει εδώ, char ch ισούται fgetc, 134 00:06:34,490 --> 00:06:36,389 περνούν στο όνομα του δείκτη αρχείου. 135 00:06:36,389 --> 00:06:38,180 Και πάλι, είναι πολύ σημαντικό εδώ να θυμόμαστε 136 00:06:38,180 --> 00:06:41,430 ότι, προκειμένου να έχουμε Αυτή η λειτουργία πετύχει, 137 00:06:41,430 --> 00:06:45,690 ο ίδιος ο δείκτης του αρχείου must've έχουν ανοίξει για την ανάγνωση. 138 00:06:45,690 --> 00:06:50,589 Δεν μπορεί να διαβάσει ένα χαρακτήρα από ένα αρχείο δείκτη που ανοίξαμε για το γράψιμο. 139 00:06:50,589 --> 00:06:52,630 Έτσι, αυτό είναι ένα από τα περιορισμούς της fopen, σωστά; 140 00:06:52,630 --> 00:06:55,470 Πρέπει να περιορίσεις τους εαυτούς μας για να εκτελεί μόνο 141 00:06:55,470 --> 00:06:57,710 μια επιχείρηση με ένα δείκτη αρχείου. 142 00:06:57,710 --> 00:07:00,220 Αν θέλαμε να διαβάζουν και να γράψει από το ίδιο αρχείο, 143 00:07:00,220 --> 00:07:03,840 θα έχουμε ανοικτές δύο χωριστές δείκτες αρχείο με το ίδιο file-- 144 00:07:03,840 --> 00:07:05,670 ένα για την ανάγνωση, το ένα για το γράψιμο. 145 00:07:05,670 --> 00:07:08,400 >> Έτσι και πάλι, ο μόνος λόγος Φέρνω ότι μέχρι τώρα είναι 146 00:07:08,400 --> 00:07:11,920 γιατί αν θα πάμε για να πραγματοποιήσετε μια κλήση να fgetc, ότι δείκτης του αρχείου must've 147 00:07:11,920 --> 00:07:14,172 έχουν ανοίξει για την ανάγνωση. 148 00:07:14,172 --> 00:07:15,880 Και τότε πολύ απλά, το μόνο που χρειάζεται να κάνουμε 149 00:07:15,880 --> 00:07:17,546 είναι να περάσει στο όνομα του δείκτη αρχείου. 150 00:07:17,546 --> 00:07:21,060 Έτσι, char ch ισούται fgetc ρΤΡ1. 151 00:07:21,060 --> 00:07:23,200 >> Αυτό πρόκειται να μας πάρει Η επόμενη character-- 152 00:07:23,200 --> 00:07:25,575 ή πάλι, εάν αυτή είναι η πρώτη φορά έχουμε κάνει αυτήν την κλήση, 153 00:07:25,575 --> 00:07:29,750 η πρώτη character-- του ανεξαρτήτως αρχείο δείχνεται από ρΤΡ1. 154 00:07:29,750 --> 00:07:32,210 Θυμηθείτε ότι αυτό ήταν το αρχείο κειμένου 1 τελεία. 155 00:07:32,210 --> 00:07:36,490 Θα πάρει τον πρώτο χαρακτήρα που και θα το αποθηκεύσει στη μεταβλητή ch. 156 00:07:36,490 --> 00:07:37,941 Αρκετά απλή. 157 00:07:37,941 --> 00:07:40,190 Έτσι, έχουμε εξετάσει μόνο σε τρεις λειτουργίες και ήδη έχουμε 158 00:07:40,190 --> 00:07:43,070 μπορεί να κάνει κάτι πολύ πετυχημένος. 159 00:07:43,070 --> 00:07:46,320 >> Έτσι, αν πάρουμε αυτή την ικανότητα να πάρει ένα χαρακτήρα 160 00:07:46,320 --> 00:07:48,943 και εμείς βρόχο it-- έτσι συνεχίζουν να πάρει χαρακτήρες 161 00:07:48,943 --> 00:07:51,390 από ένα αρχείο και πάνω πάνω και over-- τώρα 162 00:07:51,390 --> 00:07:54,500 μπορεί να διαβάσει κάθε χαρακτήρας ενός αρχείου. 163 00:07:54,500 --> 00:07:58,670 Και αν θέλουμε να εκτυπώσετε κάθε χαρακτήρα αμέσως μετά το διαβάσουμε, 164 00:07:58,670 --> 00:08:01,960 τώρα έχουμε διαβάσει από ένα αρχείο και τυπωμένο το περιεχόμενό της στην οθόνη. 165 00:08:01,960 --> 00:08:05,610 Έχουμε αποτελεσματικά συνεχόμενα αυτό το αρχείο στην οθόνη. 166 00:08:05,610 --> 00:08:09,670 Και αυτό είναι ό, τι η Linux εντολή cat κάνει. 167 00:08:09,670 --> 00:08:13,250 >> Αν πληκτρολογήσετε γάτα στο όνομα του αρχείου του, θα εκτυπώσει όλο το περιεχόμενο 168 00:08:13,250 --> 00:08:15,160 του αρχείου στο παράθυρο του τερματικού σας. 169 00:08:15,160 --> 00:08:19,010 Και έτσι αυτό το μικρό βρόχο εδώ, μόνο τρεις γραμμές κώδικα, 170 00:08:19,010 --> 00:08:23,270 αλλά αναπαράγει αποτελεσματικά η γάτα εντολών του Linux. 171 00:08:23,270 --> 00:08:25,210 Έτσι, αυτή η σύνταξη θα μπορούσε φαίνονται λίγο περίεργα, 172 00:08:25,210 --> 00:08:26,670 αλλά εδώ είναι ό, τι συμβαίνει εδώ. 173 00:08:26,670 --> 00:08:31,460 Ενώ ch ισούται fgetc, PTR δεν είναι ίσο με EOF-- είναι μια ολόκληρη μπουκιά, 174 00:08:31,460 --> 00:08:34,669 αλλά ας το σπάσει μόνο έτσι ώστε να είναι σαφής ως προς την σύνταξη. 175 00:08:34,669 --> 00:08:37,169 Έχω εδραίωσε για λόγους χώρου, 176 00:08:37,169 --> 00:08:39,049 αν και είναι λίγο συντακτικά δύσκολο. 177 00:08:39,049 --> 00:08:41,194 >> Έτσι, αυτό το μέρος σε πράσινο σωστά τώρα, τι κάνει; 178 00:08:41,194 --> 00:08:42,860 Λοιπόν, αυτό είναι ακριβώς κλήση fgetc μας, σωστά; 179 00:08:42,860 --> 00:08:44,530 Έχουμε δει ότι πριν. 180 00:08:44,530 --> 00:08:49,500 Είναι απόκτηση ενός χαρακτήρα από το αρχείο. 181 00:08:49,500 --> 00:08:53,220 Στη συνέχεια συγκρίνουμε ότι χαρακτήρα ενάντια ΕΟΦ. 182 00:08:53,220 --> 00:08:57,470 ΕΟΦ είναι μια ιδιαίτερη τιμή που είναι σύμφωνα με το πρότυπο io.h, η οποία 183 00:08:57,470 --> 00:08:59,390 είναι το τέλος του χαρακτήρα του αρχείου. 184 00:08:59,390 --> 00:09:03,450 Έτσι, βασικά, τι πρόκειται να συμβεί Είναι αυτός ο βρόχος θα διαβάσει ένα χαρακτήρα, 185 00:09:03,450 --> 00:09:07,445 συγκρίνετε με ΕΟΦ, η χαρακτήρα τέλους αρχείου. 186 00:09:07,445 --> 00:09:10,070 Αν δεν ταιριάζουν, οπότε δεν έχουμε φθάσει στο τέλος του αρχείου, 187 00:09:10,070 --> 00:09:11,490 θα εκτυπώσετε αυτό το χαρακτήρα έξω. 188 00:09:11,490 --> 00:09:13,740 Στη συνέχεια, θα πάμε πίσω στο ξεκινώντας από το βρόχο και πάλι. 189 00:09:13,740 --> 00:09:18,310 Θα πάρετε ένα χαρακτήρα, ελέγξτε κατά ΕΟΦ, να το τυπώσετε έξω, και ούτω καθεξής 190 00:09:18,310 --> 00:09:21,094 και ούτω καθεξής και ούτω καθεξής, looping μέσω αυτόν τον τρόπο 191 00:09:21,094 --> 00:09:22,760 έως ότου έχουμε φτάσει στο τέλος του αρχείου. 192 00:09:22,760 --> 00:09:24,593 Και στη συνέχεια με αυτό το σημείο, θα έχουμε εκτυπωθεί 193 00:09:24,593 --> 00:09:26,210 έξω όλο το περιεχόμενο του αρχείου. 194 00:09:26,210 --> 00:09:29,450 Έτσι και πάλι, έχουμε δει μόνο fopen, fclose, και fgetc 195 00:09:29,450 --> 00:09:34,950 και ήδη μπορούμε να επαναλάβει μια Linux εντολή τερματικού. 196 00:09:34,950 --> 00:09:38,850 >> Όπως είπα και στην αρχή, είχαμε fgetc και fputc, 197 00:09:38,850 --> 00:09:41,860 και fputc ήταν ο σύντροφος λειτουργία της fgetc. 198 00:09:41,860 --> 00:09:44,880 Και έτσι, όπως μπορείτε να φανταστείτε, είναι το ισοδύναμο γραφή. 199 00:09:44,880 --> 00:09:49,440 Μας επιτρέπει να γράφετε μόνο χαρακτήρα σε ένα αρχείο. 200 00:09:49,440 --> 00:09:53,290 >> Και πάλι, η προειδοποίηση είναι, απλά σαν να ήταν με fgetc, το αρχείο 201 00:09:53,290 --> 00:09:56,660 ότι γράφουμε για να must've ήταν άνοιξε για τη γραφή ή για προσάρτηση. 202 00:09:56,660 --> 00:10:00,820 Αν προσπαθήσουμε και να χρησιμοποιούν fputc σε ένα αρχείο ότι ανοίξαμε για την ανάγνωση, 203 00:10:00,820 --> 00:10:02,760 θα πάμε να υποφέρουν ένα κομμάτι από ένα λάθος. 204 00:10:02,760 --> 00:10:04,440 Αλλά η κλήση είναι αρκετά απλή. 205 00:10:04,440 --> 00:10:08,000 fputc κεφαλαίου Α pTR2, όλα ότι πρόκειται να κάνουμε είναι ότι είναι 206 00:10:08,000 --> 00:10:12,040 πρόκειται να γράψω το γράμμα σε Α σε αρχείο 2 κουκίδα 207 00:10:12,040 --> 00:10:14,760 κείμενο, το οποίο ήταν το όνομα του αρχείο που ανοίξαμε και αποδίδεται 208 00:10:14,760 --> 00:10:17,280 ο δείκτης pTR2. 209 00:10:17,280 --> 00:10:20,430 Έτσι θα πάμε να γράψει ένα Ένα κεφάλαιο σε αρχείο κειμένου 2 κουκίδα. 210 00:10:20,430 --> 00:10:24,592 Και θα γράψω ένα επιφώνημα το σημείο στο αρχείο 3 dot 211 00:10:24,592 --> 00:10:27,330 κείμενο, το οποίο υποδεικνύεται από ρίτ3. 212 00:10:27,330 --> 00:10:29,730 Έτσι και πάλι, αρκετά απλή εδώ. 213 00:10:29,730 --> 00:10:32,727 >> Αλλά τώρα μπορούμε να κάνουμε κάτι άλλο. 214 00:10:32,727 --> 00:10:34,560 Έχουμε αυτό το παράδειγμα ήμασταν ακριβώς που πηγαίνει πέρα ​​από 215 00:10:34,560 --> 00:10:38,950 για να είναι σε θέση να αναπαραγάγει τη γάτα Εντολών του Linux, αυτό που εκτυπώνει 216 00:10:38,950 --> 00:10:40,500 στην οθόνη. 217 00:10:40,500 --> 00:10:43,510 Λοιπόν, τώρα που έχουμε την δυνατότητα να διαβάζει χαρακτήρες από τα αρχεία 218 00:10:43,510 --> 00:10:46,590 και γράψτε τους χαρακτήρες σε αρχεία, γιατί δεν μπορούμε απλά να υποκαταστήσει ότι 219 00:10:46,590 --> 00:10:50,720 καλούν να printf με μια κλήση στο fputc. 220 00:10:50,720 --> 00:10:54,090 >> Και τώρα έχουμε διπλές cp, μια πολύ βασική εντολή του Linux 221 00:10:54,090 --> 00:10:59,100 ότι μιλήσαμε για τον τρόπο καιρό Πριν από το Linux εντολές βίντεο. 222 00:10:59,100 --> 00:11:01,070 Έχουμε αποτελεσματικά αναπαραχθεί αυτό το δικαίωμα εδώ. 223 00:11:01,070 --> 00:11:04,790 Είμαστε διαβάζοντας ένα χαρακτήρα και στη συνέχεια είμαστε γράφοντας ότι ο χαρακτήρας σε ένα άλλο αρχείο. 224 00:11:04,790 --> 00:11:07,660 Ανάγνωση από ένα αρχείο, το γράψιμο σε ένα άλλο, ξανά και ξανά 225 00:11:07,660 --> 00:11:11,350 και ξανά μέχρι να χτυπήσει τον ΕΟΦ. 226 00:11:11,350 --> 00:11:14,250 Έχουμε μέχρι το τέλος της αρχείο που προσπαθείτε να αντιγράψετε. 227 00:11:14,250 --> 00:11:18,500 Και από ότι θα έχουμε γράψει όλα των χαρακτήρων θα πρέπει να το αρχείο 228 00:11:18,500 --> 00:11:19,500 ότι γράφουμε για να. 229 00:11:19,500 --> 00:11:24,270 Έτσι, αυτό είναι CP, η εντολή αντίγραφο του Linux. 230 00:11:24,270 --> 00:11:26,550 >> Κατά την αρχή της Αυτό το βίντεο, είχα την προειδοποίηση 231 00:11:26,550 --> 00:11:29,840 ότι θα μιλήσουμε λίγο για τους δείκτες. 232 00:11:29,840 --> 00:11:32,480 Εδώ είναι ακριβώς όπου είμαστε πρόκειται να μιλήσουμε για τους δείκτες 233 00:11:32,480 --> 00:11:34,800 μαζί με το αρχείο δείκτες. 234 00:11:34,800 --> 00:11:37,870 Έτσι, αυτή η λειτουργία φαίνεται το είδος των τρομακτικό. 235 00:11:37,870 --> 00:11:39,120 Είναι πήρε πολλές παραμέτρους. 236 00:11:39,120 --> 00:11:40,430 Υπάρχει μια παρτίδα σε εξέλιξη εδώ. 237 00:11:40,430 --> 00:11:42,760 Υπάρχουν πολλές διαφορετικές χρώματα και κείμενα. 238 00:11:42,760 --> 00:11:47,100 Αλλά πραγματικά, αυτό είναι ακριβώς το γενική έκδοση του fgetc 239 00:11:47,100 --> 00:11:50,110 ότι μας επιτρέπει να πάρετε οποιοδήποτε ποσότητα των πληροφοριών. 240 00:11:50,110 --> 00:11:53,560 Μπορεί να είναι λίγο αναποτελεσματική αν είμαστε να πάρει χαρακτήρες, ένα κάθε φορά, 241 00:11:53,560 --> 00:11:55,770 επανάληψη μέσω του αρχείου ένα χαρακτήρα κάθε φορά. 242 00:11:55,770 --> 00:12:00,230 Δεν θα ήταν καλύτερο να πάρετε 100 σε ένα χρόνο ή 500 σε ένα χρόνο; 243 00:12:00,230 --> 00:12:03,250 >> Λοιπόν, fread και τη λειτουργία σύντροφό του fwrite, το οποίο θα μιλήσουμε για 244 00:12:03,250 --> 00:12:05,490 σε μια δεύτερη, μας επιτρέπει να κάνουμε ακριβώς αυτό. 245 00:12:05,490 --> 00:12:08,480 Μπορούμε να διαβάσουμε ένα αυθαίρετο ποσό πληροφοριών από ένα αρχείο 246 00:12:08,480 --> 00:12:10,290 και θα το αποθηκεύσει κάπου προσωρινά. 247 00:12:10,290 --> 00:12:12,980 Αντί να είναι σε θέση να απλά χωράει σε ένα μόνο μεταβλητή, 248 00:12:12,980 --> 00:12:15,790 μπορεί να χρειαστεί να το αποθηκεύσετε σε μια σειρά. 249 00:12:15,790 --> 00:12:19,980 Και ναι, περνάμε σε τέσσερις επιχειρήματα για να fread-- ένα δείκτη 250 00:12:19,980 --> 00:12:23,940 στη θέση όπου είμαστε πρόκειται για την αποθήκευση πληροφοριών, 251 00:12:23,940 --> 00:12:29,180 πόσο μεγάλο κάθε μονάδα πληροφοριών θα είναι, πόσες μονάδες πληροφοριών 252 00:12:29,180 --> 00:12:35,192 θέλουμε να αποκτήσουν, και από ποιο αρχείο που θέλουμε να τους πάρει. 253 00:12:35,192 --> 00:12:37,150 Φαίνεται καλύτερα με ένα παράδειγμα εδώ. 254 00:12:37,150 --> 00:12:41,640 Ας πούμε ότι δηλώνουμε μια συστοιχία 10 ακεραίων. 255 00:12:41,640 --> 00:12:45,080 Έχουμε μόλις δηλωθεί για το στοίβα αυθαίρετα int σύλλ 10. 256 00:12:45,080 --> 00:12:46,970 Έτσι, αυτό είναι αρκετά απλή. 257 00:12:46,970 --> 00:12:51,970 Τώρα τι κάνουμε και αν είναι η frecall είναι διαβάζουμε μέγεθος του int 258 00:12:51,970 --> 00:12:54,180 10 φορές bytes πληροφοριών. 259 00:12:54,180 --> 00:12:59,040 Μέγεθος int ον four-- ότι είναι το μέγεθος του ακεραίου σε c. 260 00:12:59,040 --> 00:13:02,790 >> Έτσι, αυτό που κάνουμε είναι ότι διαβάζετε 40 bytes αξίζει πληροφοριών 261 00:13:02,790 --> 00:13:05,850 από το αρχείο που υποδεικνύεται από ptr. 262 00:13:05,850 --> 00:13:08,600 Και είμαστε εκείνοι αποθήκευση 40 bytes κάπου 263 00:13:08,600 --> 00:13:12,080 όπου έχουμε θέσει κατά μέρος 40 bytes αξίας της μνήμης. 264 00:13:12,080 --> 00:13:15,970 Ευτυχώς, έχουμε ήδη κάνει αυτό με δηλώνοντας ARR, ότι υπάρχει σειρά δικαιώματος. 265 00:13:15,970 --> 00:13:19,770 Αυτό είναι ικανή συγκράτησης 10 μονάδες τεσσάρων byte. 266 00:13:19,770 --> 00:13:22,860 Έτσι, συνολικά, μπορεί να κρατήσει 40 Αξίζει bytes πληροφοριών. 267 00:13:22,860 --> 00:13:26,540 Και τώρα διαβάζετε 40 bytes πληροφοριών από το αρχείο, 268 00:13:26,540 --> 00:13:30,330 και είμαστε την αποθήκευσή του σε σύλλ. 269 00:13:30,330 --> 00:13:35,470 >> Ανάκληση από το βίντεο για δείκτες που το όνομα ενός πίνακα, όπως ARR, 270 00:13:35,470 --> 00:13:38,370 είναι πραγματικά ακριβώς ένα δείκτη για το πρώτο στοιχείο της. 271 00:13:38,370 --> 00:13:43,680 Έτσι, όταν περνάμε στην ARR εκεί, είναι, στην πραγματικότητα, περνώντας ένα δείκτη. 272 00:13:43,680 --> 00:13:46,120 >> Ομοίως μπορούμε να κάνουμε this-- εμείς δεν πρέπει απαραίτητα να 273 00:13:46,120 --> 00:13:51,200 Πρέπει να αποθηκεύσετε ρυθμιστικό μας στη στοίβα. 274 00:13:51,200 --> 00:13:54,990 Θα μπορούσαμε επίσης να κατανείμει δυναμικά Ένα ρυθμιστικό όπως αυτό, χρησιμοποιώντας malloc. 275 00:13:54,990 --> 00:13:57,340 Να θυμάστε, όταν κατανέμει δυναμικά μνήμη, 276 00:13:57,340 --> 00:14:00,550 είμαστε το αποθηκεύετε για το σωρό, όχι η στοίβα. 277 00:14:00,550 --> 00:14:02,110 Αλλά είναι ακόμα ένα ρυθμιστικό. 278 00:14:02,110 --> 00:14:06,810 >> Είναι ακόμη, στην περίπτωση αυτή, είναι που κατέχουν 640 bytes πληροφοριών 279 00:14:06,810 --> 00:14:09,230 επειδή ένα διπλό καταλαμβάνει οκτώ bytes. 280 00:14:09,230 --> 00:14:11,570 Και ζητάμε για 80 από αυτά. 281 00:14:11,570 --> 00:14:13,770 Θέλουμε να έχουμε χώρο να κρατήσει 80 δίκλινα. 282 00:14:13,770 --> 00:14:17,210 Έτσι, 80 φορές 8 είναι 640 bytes πληροφοριών. 283 00:14:17,210 --> 00:14:21,880 Και ότι η κλήση να είναι fread συλλογή 640 bytes πληροφοριών 284 00:14:21,880 --> 00:14:27,770 από το αρχείο που υποδεικνύεται από PTR και την αποθήκευσή του σε arr2 τώρα. 285 00:14:27,770 --> 00:14:32,770 >> Τώρα μπορούμε επίσης να αντιμετωπίσει fread ακριβώς όπως μια κλήση στο fgetc. 286 00:14:32,770 --> 00:14:37,140 Στην περίπτωση αυτή, είμαστε απλώς προσπαθεί να να πάρει ένα χαρακτήρα από το αρχείο. 287 00:14:37,140 --> 00:14:40,070 Και δεν χρειαζόμαστε ένα σειρά για να κρατήσει ένα χαρακτήρα. 288 00:14:40,070 --> 00:14:43,170 Μπορούμε να το αποθηκεύσετε μόνο σε μια μεταβλητή χαρακτήρα. 289 00:14:43,170 --> 00:14:46,390 >> Τα αλιεύματα, όμως, είναι ότι όταν έχουμε απλώς μια μεταβλητή, 290 00:14:46,390 --> 00:14:50,290 θα πρέπει να περάσει στο διεύθυνση της μεταβλητής 291 00:14:50,290 --> 00:14:52,550 διότι υπενθυμίζουν ότι το Το πρώτο επιχείρημα για να fread 292 00:14:52,550 --> 00:14:59,210 είναι ένας δείκτης για την τοποθεσία και τη μνήμη όπου θέλουμε να αποθηκεύσουμε τις πληροφορίες. 293 00:14:59,210 --> 00:15:01,550 Και πάλι, το όνομα ενός πίνακας είναι ένας δείκτης. 294 00:15:01,550 --> 00:15:04,200 Γι 'αυτό και δεν χρειάζεται να το κάνουμε εμπορικό και συστοιχία. 295 00:15:04,200 --> 00:15:07,270 Αλλά ο χαρακτήρας c c εδώ, δεν είναι μια συστοιχία. 296 00:15:07,270 --> 00:15:08,390 Είναι απλά μια μεταβλητή. 297 00:15:08,390 --> 00:15:11,840 Και γι 'αυτό πρέπει να περάσει ένα εμπορικό και c για να υποδείξει 298 00:15:11,840 --> 00:15:15,350 ότι αυτή είναι η διεύθυνση όπου θέλουμε για να αποθηκεύσετε αυτό το ένα byte των πληροφοριών, 299 00:15:15,350 --> 00:15:20,479 αυτό χαρακτήρα που είμαστε συλλογή από ptr. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- Θα πάω μέσα αυτό λίγο περισσότερο 301 00:15:22,270 --> 00:15:25,440 quickly-- είναι λίγο πολύ η ακριβές ισοδύναμο της fread 302 00:15:25,440 --> 00:15:27,720 εκτός του ότι είναι για το γράψιμο αντί της ανάγνωσης, απλά 303 00:15:27,720 --> 00:15:31,610 όπως το other-- είχαμε ανοιχτή και κοντά, να πάρει ένα χαρακτήρα, 304 00:15:31,610 --> 00:15:32,530 γράψετε ένα χαρακτήρα. 305 00:15:32,530 --> 00:15:35,040 Τώρα είναι να πάρει αυθαίρετη ποσότητα πληροφοριών, 306 00:15:35,040 --> 00:15:37,170 δικαίωμα αυθαίρετα το ποσό των πληροφοριών. 307 00:15:37,170 --> 00:15:39,790 Έτσι ακριβώς όπως πριν, μπορούμε έχουν μια σειρά από 10 ακέραιους αριθμούς 308 00:15:39,790 --> 00:15:43,210 όπου έχουμε ήδη πληροφορίες που είναι αποθηκευμένες, ίσως. 309 00:15:43,210 --> 00:15:46,580 >> Ήταν ίσως μερικές γραμμές κώδικα ότι πρέπει να πάτε μεταξύ αυτών των δύο 310 00:15:46,580 --> 00:15:49,990 όπου γεμίζω με arr κάτι σημαντικό. 311 00:15:49,990 --> 00:15:51,880 Γεμίζω με 10 διαφορετικές ακέραιοι. 312 00:15:51,880 --> 00:15:54,920 Και αντ 'αυτού, τι είμαι κάνει γράφει από σύλλ 313 00:15:54,920 --> 00:15:58,600 και τη συλλογή των πληροφοριών από την σύλλ. 314 00:15:58,600 --> 00:16:02,390 Και παίρνω τις πληροφορίες και τη θέση στο αρχείο. 315 00:16:02,390 --> 00:16:05,410 >> Έτσι, αντί να είναι από το αρχείο στο buffer, 316 00:16:05,410 --> 00:16:08,790 είμαστε τώρα σε εξέλιξη από το ρυθμιστικό στο αρχείο. 317 00:16:08,790 --> 00:16:10,580 Έτσι είναι ακριβώς το αντίθετο. 318 00:16:10,580 --> 00:16:16,680 Έτσι και πάλι, όπως και πριν, μπορούμε έχουν επίσης ένα σωρό κομμάτι της μνήμης 319 00:16:16,680 --> 00:16:19,600 ότι έχουμε δυναμικά κατανέμονται και να διαβάσετε από αυτό 320 00:16:19,600 --> 00:16:21,570 και γράφουν ότι στο αρχείο. 321 00:16:21,570 --> 00:16:24,900 >> Και έχουμε επίσης μια μοναδική μεταβλητή μπορεί να χωρέσει ένα byte 322 00:16:24,900 --> 00:16:27,200 των πληροφοριών, όπως ένα χαρακτήρα. 323 00:16:27,200 --> 00:16:29,830 Αλλά και πάλι, θα πρέπει να περάσει σε η διεύθυνση της μεταβλητής 324 00:16:29,830 --> 00:16:31,840 όταν θέλουμε να διαβάσουμε από αυτό. 325 00:16:31,840 --> 00:16:35,280 Έτσι μπορούμε να γράψουμε τις πληροφορίες βρίσκουμε σε αυτή τη διεύθυνση 326 00:16:35,280 --> 00:16:39,050 με το δείκτη του αρχείου, PTR. 327 00:16:39,050 --> 00:16:41,630 >> Υπάρχουν πολλά άλλα μεγάλο αρχείο I / O λειτουργίες 328 00:16:41,630 --> 00:16:44,650 ότι κάνουν διάφορα πράγματα εκτός αυτά που έχουμε μιλήσει σήμερα. 329 00:16:44,650 --> 00:16:46,450 Ένα ζευγάρι από αυτά μπορείτε να βρείτε χρήσιμες 330 00:16:46,450 --> 00:16:50,840 είναι fgets και fputs, το οποίο είναι το ισοδύναμο 331 00:16:50,840 --> 00:16:56,190 της fgetc και fputc αλλά και για την ανάγνωση μια χορδή από ένα αρχείο. 332 00:16:56,190 --> 00:16:59,020 Αντί για ένα μεμονωμένο χαρακτήρα, θα διαβάσετε μια ολόκληρη εγχόρδων. 333 00:16:59,020 --> 00:17:02,940 fprintf, το οποίο επιτρέπει ουσιαστικά μπορείτε να χρησιμοποιήσετε printf για να γράψει στο αρχείο. 334 00:17:02,940 --> 00:17:05,619 Έτσι ακριβώς όπως μπορείτε να κάνετε τα αντικατάσταση μεταβλητών χρησιμοποιώντας 335 00:17:05,619 --> 00:17:09,900 το ποσοστό κράτησης θέσης i και τοις εκατό d, και ούτω καθεξής, με printf 336 00:17:09,900 --> 00:17:14,690 μπορείτε να πάρετε τον ίδιο τρόπο η printf κορδόνι και κάτι εκτύπωσης 337 00:17:14,690 --> 00:17:16,800 όπως ότι σε ένα αρχείο. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- εάν έχετε ένα DVD player είναι η αναλογία που συνήθως χρησιμοποιούν here-- 339 00:17:20,720 --> 00:17:23,109 Είναι κάπως σαν τη χρήση σας rewind και fast forward 340 00:17:23,109 --> 00:17:25,819 κουμπιά για να μετακινηθείτε γύρω από την ταινία. 341 00:17:25,819 --> 00:17:28,369 Ομοίως, μπορείτε να μετακινήσετε γύρω από το αρχείο. 342 00:17:28,369 --> 00:17:30,250 Ένα από τα πράγματα μέσα ότι η δομή του αρχείου 343 00:17:30,250 --> 00:17:34,270 ότι γ δημιουργεί για εσάς είναι ένας δείκτης από όπου και αν βρίσκεστε στο αρχείο. 344 00:17:34,270 --> 00:17:36,420 Είστε σε πολύ αρχή, στο byte μηδέν; 345 00:17:36,420 --> 00:17:39,290 Είσαι στο byte 100, byte 1.000, και ούτω καθεξής; 346 00:17:39,290 --> 00:17:44,340 Μπορείτε να χρησιμοποιήσετε fseek να μετακινήσετε αυθαίρετα αυτός ο δείκτης, μπροστά ή πίσω. 347 00:17:44,340 --> 00:17:46,744 >> Και ftell, και πάλι παρόμοιο με ένα DVD player, 348 00:17:46,744 --> 00:17:49,660 Είναι σαν ένα μικρό ρολόι που λέει Σας πόσα λεπτά και δευτερόλεπτα 349 00:17:49,660 --> 00:17:52,480 είναι σε μια συγκεκριμένη ταινία. 350 00:17:52,480 --> 00:17:56,990 Ομοίως, ftell σας λέει πώς ο αριθμός των bytes που είναι στο αρχείο. 351 00:17:56,990 --> 00:18:00,210 feof είναι μια διαφορετική έκδοση της ανίχνευσης αν έχετε 352 00:18:00,210 --> 00:18:01,700 φθάσει στο τέλος του αρχείου. 353 00:18:01,700 --> 00:18:03,600 Και ferror είναι μια συνάρτηση που μπορείτε να χρησιμοποιήσετε 354 00:18:03,600 --> 00:18:06,959 να εξακριβώσουμε αν κάτι έχει πάει στραβά εργασίας με ένα αρχείο. 355 00:18:06,959 --> 00:18:08,750 Και πάλι, αυτό είναι ακριβώς το ξύσιμο της επιφάνειας. 356 00:18:08,750 --> 00:18:12,730 Υπάρχουν ακόμα πολλά περισσότερα file I / O λειτουργίες στο πρότυπο io.h. 357 00:18:12,730 --> 00:18:16,620 Αλλά αυτό θα σας πάρει κατά πάσα πιθανότητα Ξεκίνησα να δουλεύω με δείκτες αρχείο. 358 00:18:16,620 --> 00:18:17,640 Είμαι ο Νταγκ Lloyd. 359 00:18:17,640 --> 00:18:19,750 Αυτό είναι CS50. 360 00:18:19,750 --> 00:18:21,669