Συμβουλευτείτε την τεκμηρίωση του προγράμματος που παρέχει το CSV αρχείο . Προσδιορίστε τον αριθμό των πεδίων σε κάθε γραμμή , καθώς και η μορφή κάθε πεδίου . Για παράδειγμα , εάν ένα πρόγραμμα παρέχει ένα CSV με τα ακόλουθα στοιχεία :
1 , "test" , 34,5
Θα σηματοδοτήσει κάτω τρεις τομείς : ένα ακέραιο , ένα string και το υπ 'αριθμόν ένα πλωτό σημείο . 2
Δημιουργήστε μια δομή που περιέχει ένα μέλος δεδομένων για κάθε πεδίο που προσδιορίζονται στο CSV . Χρησιμοποιώντας το παρεχόμενο παράδειγμα η γραμμή 1 , "test" , 34.5 θα χρειαστείτε την ακόλουθη δομή : struct
δεδομένα
{
int col1 ?
char * Col2 ?
επιπλέουν Col3 ?
} ?
εικόνων 3
Δημιουργήστε μια μέθοδο στο πρόγραμμά σας που θα χειριστεί την ανάγνωση του αρχείου CSV . Αυτό θα πρέπει να είναι προσβάσιμες για το υπόλοιπο του προγράμματός σας , και πιθανότατα θα χρειαστεί να εργαστούμε για κοινές δομές δεδομένων , έτσι ώστε άλλες μέθοδοι μπορούν να έχουν πρόσβαση στα δεδομένα που έχει διαβάσει μέσα Περάστε την παράμετρο σε σχέση με αίρει την ανάγκη για μια τιμή επιστροφής . Ένα πρωτότυπο παράδειγμα λειτουργίας θα είναι :
άκυρη ParseCSV ( char * όνομα αρχείου, δεδομένων και εισόδου) ?
Η 4
Συμπεριλάβετε το πρότυπο κεφαλίδα IO χρησιμοποιώντας τον ακόλουθο κώδικα :
# include Προσθέστε τον κώδικα στην κορυφή του αρχείου πηγαίου κώδικα που θα διαβάζει το CSV . Συμπεριλάβετε τη βιβλιοθήκη string για να καταστεί δυνατή χειραγώγηση της CSV δεδομένα χρησιμοποιώντας τον ακόλουθο κώδικα : # include Προσθέστε τον κώδικα στην κορυφή του αρχείου πηγαίου κώδικα που θα διαβάζει το CSV Δημιουργήστε ένα αντικείμενο αρχείου , το οποίο θα διαβάσει τα δεδομένα , χρησιμοποιώντας τον ακόλουθο κώδικα : FILE * Pinput ? Δημιουργήστε ένα χαρακτήρα buffer αρκετά μεγάλο να κρατήσει ένα γραμμή του αρχείου σε έναν χρόνο . Λόγω των περιορισμών της γλώσσας , το πιο άμεσος τρόπος για να γίνει αυτό είναι να δηλώσει ένα χαρακτήρα σειρά από αρκετά μεγάλο μέγεθος , όπως με : # define BUFFER_SIZE 1024 char buf [ BUFFER_SIZE ] ? Ανοίξτε το αρχείο με τον ακόλουθο κώδικα , και το εκχωρούμε που δημιουργήθηκε προηγουμένως αντικείμενο FILE σας : Pinput = fopen ( " όνομα αρχείου ", " r" ) Διαβάστε σε μια γραμμή του αρχείου χρησιμοποιώντας τον ακόλουθο κώδικα : fgets ( buf , sizeof ( buf ) , Pinput ) Ανάλυση της CSV χρησιμοποιώντας η λειτουργία " strtok " . Δημιουργήστε μια νέα ακολουθία χαρακτήρων για να επισημάνω τα μαρκών, καθώς και η προετοιμασία με δεδομένα από τη γραμμή διαβάζονται παραπάνω : char * tok = strtok ( buf , " , " ) Μετατρέψτε τα έλαβαν δείγμα στα κατάλληλα δεδομένα . Χρησιμοποιώντας το παράδειγμα της γραμμής : 1 , "test" , 3.45 μετατρέψετε τα δεδομένα που περιέχονται σε " tok " σε ακέραιο χρησιμοποιώντας τον ακόλουθο κώδικα : row.col1 = atoi ( tok ) ? Για τα επόμενα διαβάζει από την ίδια γραμμή , περνούν " strtok " μια παράμετρο NULL αντί του buffer συμβολοσειράς μπορείτε να διαβάσετε στο παρελθόν: tok = strtok ( NULL , " , " ) στη συνέχεια , μετατρέψτε το token στον κατάλληλο τύπο δεδομένων . Χρησιμοποιώντας το παράδειγμα της γραμμής 1 , "test" , 3.45 Ο κώδικας ανάλυσης για μια ενιαία γραμμή θα είναι : char * tok = strtok ( buf , " , " ) ? row.col1 = atoi ( tok ) ? tok = strtok ( NULL , " ")? row.col2 = tok ? tok = strtok ( NULL , " ")? row.col3 = atof ( tok ) ? Κάντε το αυτό για όλες τις καταχωρήσεις για κάθε γραμμή του CSV . Η λειτουργία " strtok " θα συνεχίσει να παρέχει τα δεδομένα μεταξύ των τιμών κόμμα , μέχρι να εξαντληθεί δεδομένων στο buffer , σε ποιο σημείο θα επιστρέψει NULL . Αυτό θα δείξει ότι έχετε τελειώσει με τη γραμμή .
5
Η . 6
Η 7
8
Τετάρτη 9
Η 10
Η 11
12
13
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα