Προς το περιεχόμενο

"πρόβλημα" me C


g20_ready

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεία σας παιδιά,

έχω μια εργασία C,η οποία ζητάει ενα πρόγραμμα αναζήτησης string σε ένα αρχείο.

το πρόβλημά μου είναι ο τρόπος με τον οποίο θα κάνω την αναζήτηση.Σκευτηκα να τρέξω

το string που εισάγει ο χρήστης σε όλο το αρχείο και να κάνω έλεγχο γράμμα γράμμα.Ο τρόπος αυτός είναι πολύ χρονοβόρος,και καθόλου πρακτικός.

Αν κάποιος μπορεί να σκευτεί κάτι άλλο ας απαντήσει.

 

thnx in advance:)

Δημοσ.

Αν το αρχείο είναι μικρό μπορείς να το φορτώσεις στη μνήμη και με strstr να το εντοπίσεις.

 

Αν πάλι είναι μεγάλο, μπορείς να το φορτώνεις σε κομμάτια και με strstr να ψάχνεις εκείνα τα κομμάτια.

Δημοσ.
Αν το αρχείο είναι μικρό μπορείς να το φορτώσεις στη μνήμη και με strstr να το εντοπίσεις.

 

Αν πάλι είναι μεγάλο, μπορείς να το φορτώνεις σε κομμάτια και με strstr να ψάχνεις εκείνα τα κομμάτια.

 

Δεν έχουμε διδαχθεί την εντολή strstr αλλά έψαξα στο google και νομίζω κατάλαβα πως δουλεύει.

ευχαριστώ για την απάντηση.

Δημοσ.
Σκευτηκα να τρέξω το string που εισάγει ο χρήστης σε όλο το αρχείο και να κάνω έλεγχο γράμμα γράμμα.Ο τρόπος αυτός είναι πολύ χρονοβόρος,και καθόλου πρακτικός.

Δεν είναι αργός ο τρόπος, η υλοποίησή σου είναι αργή προφανώς... ;)

Δημοσ.

Ναι, αλλά τη δουλειά που κάνεις με το strstr δεν μπορείς να την κάνεις με το strcmp. Και η for() είναι στην ουσία μια while() αλλά γιατί να κάνεις τη ζωή σου δύσκολη όταν μπορείς να κάνεις τη δουλειά σου με 1 γραμμή;

Δημοσ.

Το νόημα αυτού που είπα είναι ότι το strstr δεν θα είναι δα και πολύ αποδοτικότερο από την μια προς μια εξέταση των γραμμάτων.

Δημοσ.

Υποθέτω ότι αφού δε σας έχει διδαχθεί το strstr ο καθηγητής περιμένει να κάνεις το εξής:

Ψάχνεις όλο το έγγραφο για να βρεις το πρώτο γράμμα του string που αναζητάς. Μόλις το βρεις αρχίζεις και συγκρίνεις ένα ένα τα επόμενα γράμματα. Αν βρεις το string σταματάς εκεί και είσαι οκ. Αλλιώς συνεχίζεις την αναζήτηση, πάντα ψάχνοντας μόνο το πρώτο γράμμα του string ώστε μόλις το βρεις να ελέγξεις τα επόμενα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...