makis89 Δημοσ. 16 Ιανουαρίου 2008 Μέλος Δημοσ. 16 Ιανουαρίου 2008 Αυτό δεν γίνεται και με μία if ; Ποιός ο λόγος να χρησιμοποιήσω επιπλέον συνάρτηση ;
bokarinho Δημοσ. 16 Ιανουαρίου 2008 Δημοσ. 16 Ιανουαρίου 2008 Αυτό δεν γίνεται και με μία if ; Ποιός ο λόγος να χρησιμοποιήσω επιπλέον συνάρτηση ; Όταν γράφεις κώδικα και πολύ μάλιστα είναι καλό να τον τακτοποιείς με συναρτήσεις που θα σου κάνουν μερική από την δουλειά έτσι ώστε να μην γράφεις τον ίδιο κώδικα κάθε φορά και να είναι το πρόγραμμα σου καλά δομημένο, τώρα εσύ κάνεις ότι θέλεις, δεν είναι δική μου υπόθεση, εγώ απλώς σου πρότεινα ένα τρόπο.
Directx Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 Αυτό δεν γίνεται και με μία if ; Ποιός ο λόγος να χρησιμοποιήσω επιπλέον συνάρτηση ; Μπορεί να γίνει με μια if αν ο compiler σου είναι συμβατός με POSIX και προσφέρει την ρουτίνα access("filename",0) της βιβλιοθήκη io.h, η οποία επιστρέφει 0 όταν υπάρχει το αρχείο "filename" ή -1 όταν δεν υπάρχει -το ",0" ζητά από την access να ελέγξει για την ύπαρξη του αρχείου, μάλιστα γλυτώνεις και από το άγχος το αρχείο να μην έχει read-permissions... πχ. > fopen("myfile.txt",(access("myfile.txt")==-1)?"w":"r+"); Τώρα αν θέλεις να εξασφαλίσεις πως ο κώδικας σου θα γίνεται compile σε κάθε ANSI-C compiler προφανώς η χρήση της ρουτίνας access είναι επίφοβη, καθώς μπορεί να μην υπάρχει, οπότε γράφεις μια ρουτίνα σαν του Bokarinho.
georgemarios Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 η λύση του bokarinho είναι σωστή και δε σου επιβαρύνει το πρόγραμμα. Μη σε τρόμάζει οτι μεγαλώνει ο κώδικας. Καλύτερα σταθερό και δομημένο πρόγραμμα από το να γλυτώσεις μερικά bytes εκτελέσιμου.
sboo Δημοσ. 8 Οκτωβρίου 2008 Δημοσ. 8 Οκτωβρίου 2008 Έχω ένα παρόμοιο πρόβλημα με την διαφορά ότι για την άσκηση δεν μου επιτρέπετε να χρησιμοποιήσω έτοιμες συναρτήσεις για σύγκριση συμβολοσειρών (str*) και την fscanf. Το αρχείο που διαβάζω έχει την μορφή integer\t"string"\t"string" (Π.χ. 1 "DAdADAF" "SDASDA") και πρέπει να εισάγω τον Integer και τα strings σε μία δομή της μορφής: struct{ int pos char firststr[50] char secondstr[50]} καμία βοήθεια;
Aesmade Δημοσ. 8 Οκτωβρίου 2008 Δημοσ. 8 Οκτωβρίου 2008 Μπορείς να χρησιμοποιήσεις την fread και μετά στο string που θα σου δώσει την sscanf. Όσο για την σύγκριση των char*, μπορείς πολύ εύκολα να φτιάξεις μια δικιά σου συνάρτηση που απλώς συγκρίνει κάθε γράμμα των δύο char*, αν είναι διαφορετικά επιστρέφει π.χ. 0 και στο τέλος του loop της σύγκρισης επιστρέφει 1. Θα στην έγραφα αλλά δεν το επιτρέπουν οι κανόνες.
sboo Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 Μπορείς να χρησιμοποιήσεις την fread και μετά στο string που θα σου δώσει την sscanf. Όσο για την σύγκριση των char*, μπορείς πολύ εύκολα να φτιάξεις μια δικιά σου συνάρτηση που απλώς συγκρίνει κάθε γράμμα των δύο char*, αν είναι διαφορετικά επιστρέφει π.χ. 0 και στο τέλος του loop της σύγκρισης επιστρέφει 1. Θα στην έγραφα αλλά δεν το επιτρέπουν οι κανόνες. μπορείς να μου στείλεις ένα Pm ;
_tasos Δημοσ. 10 Οκτωβρίου 2008 Δημοσ. 10 Οκτωβρίου 2008 Αν χρησιμοποιήσεις την sscanf αντί της fscanf πάλι θα σε κόψουν διότι είναι ακριβώς το ίδιο πράγμα!! Η άσκηση μάλλον απαιτεί: Να διαβάσεις έναν έναν τους χαρακτήρες Να δημιουργείς ένα δεύτερο string με τους χαρακτήρες που διαβάζεις Όταν βρίσκεις τον \t χαρακτήρα να επεξεργάζεσαι το δεύτερο string που έφτιαξες και να ξανααρχίζεις από την αρχή. Αν πάλι κατάλαβα λάθος πες την άσκηση και θα δώσουμε κάποιες κατευθύνσεις
Aesmade Δημοσ. 10 Οκτωβρίου 2008 Δημοσ. 10 Οκτωβρίου 2008 Αν χρησιμοποιήσεις την sscanf αντί της fscanf πάλι θα σε κόψουν διότι είναι ακριβώς το ίδιο πράγμα!! Μα άμα είπαν μόνο για την fscanf και όχι για την sscanf δικό τους πρόβλημα =P Bέβαια ο δικός σου τρόπος είναι πιο σίγουρος.
_tasos Δημοσ. 11 Οκτωβρίου 2008 Δημοσ. 11 Οκτωβρίου 2008 Αν έχω καταλάβει καλά ο σκοπός της άσκησης είναι να τους μάθουν να δουλεύουν με πίνακες χαρακτήρων. Οπότε όποια έκδοση της scanf και να χρησιμοποιήσει δεν είναι ο τρόπος που θέλει ο καθηγητής. Anyway...
sboo Δημοσ. 16 Οκτωβρίου 2008 Δημοσ. 16 Οκτωβρίου 2008 Αν χρησιμοποιήσεις την sscanf αντί της fscanf πάλι θα σε κόψουν διότι είναι ακριβώς το ίδιο πράγμα!! Η άσκηση μάλλον απαιτεί: Να διαβάσεις έναν έναν τους χαρακτήρες Να δημιουργείς ένα δεύτερο string με τους χαρακτήρες που διαβάζεις Όταν βρίσκεις τον \t χαρακτήρα να επεξεργάζεσαι το δεύτερο string που έφτιαξες και να ξανααρχίζεις από την αρχή. Αν πάλι κατάλαβα λάθος πες την άσκηση και θα δώσουμε κάποιες κατευθύνσεις σωστός... Έχω καταφέρει να διαβάσω μία μία τις γραμμές του αρχείου και να τις αποθηκεύσω σε έναν πίνακα. Πως θα διαβάζω έναν-έναν τους χαρακτήρες; Για δώστε καμιά βοήθεια!!!
Aesmade Δημοσ. 16 Οκτωβρίου 2008 Δημοσ. 16 Οκτωβρίου 2008 http://www.cplusplus.com/reference/clibrary/cstdio/fgetc.html
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.