Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να διαβάσετε ένα αρχείο CSV σε C

Πολλά προϊόντα λογισμικού που ασχολούνται με τους αριθμούς και τους υπολογισμούς έχουν τη δυνατότητα για την εξαγωγή δεδομένων σε τιμές διαχωρισμένες με κόμματα ( CSV) . Αυτή η μορφή μπορεί να είναι ένας αποτελεσματικός τρόπος για τη μεταφορά δεδομένων μεταξύ των διαφόρων προγραμμάτων , όπως είναι ευανάγνωστο και αρκετά εύκολο να χειραγωγήσουν . Πολλά προγράμματα C που ασχολούνται με τα στοιχεία κατά πάσα πιθανότητα θα πρέπει να διαβαστεί από ένα αρχείο CSV σε κάποιο σημείο . Τα πράγματα που θα χρειαστείτε
επεξεργαστή κειμένου
Compiler
CSV αρχείο εισόδου
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

Συμβουλευτείτε την τεκμηρίωση του προγράμματος που παρέχει το 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 .
5

Συμπεριλάβετε τη βιβλιοθήκη string για να καταστεί δυνατή χειραγώγηση της CSV δεδομένα χρησιμοποιώντας τον ακόλουθο κώδικα :

# include

Προσθέστε τον κώδικα στην κορυφή του αρχείου πηγαίου κώδικα που θα διαβάζει το CSV
Η . 6

Δημιουργήστε ένα αντικείμενο αρχείου , το οποίο θα διαβάσει τα δεδομένα , χρησιμοποιώντας τον ακόλουθο κώδικα :

FILE * Pinput ?
Η 7

Δημιουργήστε ένα χαρακτήρα buffer αρκετά μεγάλο να κρατήσει ένα γραμμή του αρχείου σε έναν χρόνο . Λόγω των περιορισμών της γλώσσας , το πιο άμεσος τρόπος για να γίνει αυτό είναι να δηλώσει ένα χαρακτήρα σειρά από αρκετά μεγάλο μέγεθος , όπως με :

# define BUFFER_SIZE 1024

char buf [ BUFFER_SIZE ] ?
8

Ανοίξτε το αρχείο με τον ακόλουθο κώδικα , και το εκχωρούμε που δημιουργήθηκε προηγουμένως αντικείμενο FILE σας :

Pinput = fopen ( " όνομα αρχείου ", " r" )
Τετάρτη 9

Διαβάστε σε μια γραμμή του αρχείου χρησιμοποιώντας τον ακόλουθο κώδικα :

fgets ( buf , sizeof ( buf ) , Pinput )
Η 10

Ανάλυση της CSV χρησιμοποιώντας η λειτουργία " strtok " . Δημιουργήστε μια νέα ακολουθία χαρακτήρων για να επισημάνω τα μαρκών, καθώς και η προετοιμασία με δεδομένα από τη γραμμή διαβάζονται παραπάνω :

char * tok = strtok ( buf , " , " )
Η 11

Μετατρέψτε τα έλαβαν δείγμα στα κατάλληλα δεδομένα . Χρησιμοποιώντας το παράδειγμα της γραμμής :

1 , "test" , 3.45

μετατρέψετε τα δεδομένα που περιέχονται σε " tok " σε ακέραιο χρησιμοποιώντας τον ακόλουθο κώδικα :

row.col1 = atoi ( tok ) ?

12

Για τα επόμενα διαβάζει από την ίδια γραμμή , περνούν " 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 ) ?

13

Κάντε το αυτό για όλες τις καταχωρήσεις για κάθε γραμμή του CSV . Η λειτουργία " strtok " θα συνεχίσει να παρέχει τα δεδομένα μεταξύ των τιμών κόμμα , μέχρι να εξαντληθεί δεδομένων στο buffer , σε ποιο σημείο θα επιστρέψει NULL . Αυτό θα δείξει ότι έχετε τελειώσει με τη γραμμή .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα