Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
387 views

Παρατήρησα στο παράρτημα των σημειώσεων του μαθήματος ότι υπάρχει δεσμευμένη λέξη του PZhelp "READ_STRING".
Φαντάζομαι ότι είναι εντολή για διάβασμα συμβολοσειρών.
Θα μπορούσε κάποιος να μου εξηγήσει τι ακριβώς ορίσματα χρειάζεται και γενικά πώς χρησιμοποιείται;

in progintro by (550 points) | 387 views

1 Answer

0 votes

Όλο το αρχείο της PZHelp και οι συναρτήσεις που υλοποιεί μπορούν να βρεθούν στο github repo της γλώσσας. Εκεί μπορείς να βρείς και τον κώδικα που τρέχει όταν καλείς την READ_STRING. Ακόμα εκεί υπάρχει το documentation για κάθε συνάρτηση. Για την READ_STRING είναι αυτό.

P.S. Προσωπικά προτείνω να κοιτάξεις και τον κώδικα της συνάρτησης και να δεις πώς δουλεύει under the hood, καθώς σιγά σιγά φτάνετε στο τέλος του εξαμήνου και μπορείτε να καταλάβετε αρκετά καλά πως δουλεύουν και τα πράγματα σε C/C++ επίπεδο.

by (2.2k points)
0

Ευχαριστώ.
Ακολουθώντας το παράδειγμα έγραψα αυτόν τον κώδικα
Ωστόσο όταν δοκιμάζω να το τρέξω μου βγαίνει "Command terminated by signal 11".
Γιατί μπορεί να συμβαίνει αυτό;

0

Ενδιαφέρον. Γιατί η READ_STRING δεν δεσμεύει μνήμη (και το documentation της ειναι ελαφρως παραπλανητικό). Άρα ουσιαστικά πας να γράψεις θέσεις μνήμης που δεν έχεις δεσμεύσει.

Αυτό που θα έπρεπε να κάνεις είναι πχ

char a[5];
READ_STRING(5, a);

Keep in mind ότι αν το input του χρήστη ξεπεράσει το μέγεθος του πίνακα μεωμένο κατα 1, θα έχεις πάλι segfault.

0

Τέλεια ευχαριστώ

301 questions

289 answers

288 comments

903 users