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

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

Πώς να μειώσετε το μήκος του String σε C

Κατά την εργασία με χορδές σε C , μπορεί να είναι χρήσιμο να αυξηθεί δυναμικά ή να μειώσετε το μέγεθος του string για να διαχειριστεί αποτελεσματικά τη μνήμη του . Κανονικά strings που ορίζονται από τη λέξη-κλειδί " char * " έχουν στατικά μεγέθη που δεν μπορεί να αλλάξει , έτσι θα πρέπει να συνεργαστεί άμεσα με μπλοκ μνήμης αντ 'αυτού. Χρησιμοποιήστε τη λειτουργία " malloc " για να δημιουργήσετε ένα μπλοκ μνήμης που αποθηκεύει το string και μετά τη λειτουργία " realloc " για να αλλάξετε το μέγεθος του μπλοκ μνήμης . Οδηγίες
Η

1 Ανοίξτε το C αρχείο προέλευσης σε έναν επεξεργαστή κειμένου , όπως το Microsoft Visual Studio Express . 2

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

# include

# include εικόνων
3

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

char * buf , * cur_ptr , * temp_ptr ?

char c ?

size_t mem_size = 200 ?

size_t mem_used = 0 ?
Η 4

Καλέστε τη λειτουργία " malloc " να διαθέσει ένα μπλοκ μνήμης που μπορείτε να χρησιμοποιήσετε για να αποθηκεύσετε τη σειρά , με την προσθήκη του κώδικα :

buf = ( char * ) malloc ( ( mem_size ) * sizeof ( char ) ) ?

αν ( buf == NULL) επιστροφή -1 ?
5

Λάβετε εισόδου του χρήστη, ένα χαρακτήρα κάθε φορά , έως ότου η αλλαγή γραμμής ( '\\ n' ) χαρακτήρα, είναι ή 200 χαρακτήρες που εισάγονται , με την προσθήκη του κώδικα :

cur_ptr = buf ?

ενώ ( ( ! c = getchar ( ) ) = ' \\ n' ) {

* cur_ptr + + = c ?

mem_used + + ?

αν ( mem_used == mem_size ) διάλειμμα?

}
Η 6

Καλέστε τη λειτουργία " realloc " να ανακατανείμει το μπλοκ μνήμης , μείωση του μεγέθους του κατά 2 , με τον ακόλουθο κώδικα :

εάν ( mem_used > 2 ) {

mem_size - = 2 ?

temp_ptr = realloc ( buf , mem_size ) ?

αν ( temp_ptr == NULL) επιστροφή -1 ?

buf = temp_ptr ?

cur_ptr = buf + mem_used ?

}

Ο δείκτης " buf " σημεία στην αρχή του " string" μπλοκ μνήμης και " cur_ptr " επισημαίνει την τρέχουσα θέση , που είναι το τέλος του "string ".
Η 7

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

δωρεάν ( buf ) ?
8

Αποθηκεύστε το αρχείο σας C , την κατάρτιση και την εκτέλεση του προγράμματος να εκτελέσει το νέο κώδικα εγχόρδων
Η <. br >
Η

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

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