WordUp Δημοσ. 15 Μαρτίου 2009 Δημοσ. 15 Μαρτίου 2009 Noobικη ερώτηση, αλλά δεν με βοήθησε καθόλου το google... Πώς γίνεται μέσω της scanf να διαβάζω ΚΑΙ whitespace όταν διαβάζω strings; Γιατί ως γνωστόν, η scanf πηδάει whitespace characters. Εάν έχουμε κάτι τέτοιο >char lol[255]; scanf("%s", &lol); και εισάγουμε "hello world" θα εκχωρηθεί μόνο το "hello". Υπάρχει κάποιαο λύση; Κάπου είχα διαβάσει κάτι πως να περάσω με for loop και %c ένα string, αλλά δεν πολυκατάλαβα. Ευχαριστώ προκαταβολικά.
evabb Δημοσ. 15 Μαρτίου 2009 Δημοσ. 15 Μαρτίου 2009 Noobικη ερώτηση, αλλά δεν με βοήθησε καθόλου το google... Πώς γίνεται μέσω της scanf να διαβάζω ΚΑΙ whitespace όταν διαβάζω strings; Γιατί ως γνωστόν, η scanf πηδάει whitespace characters. Εάν έχουμε κάτι τέτοιο >char lol[255]; scanf("%s", &lol); και εισάγουμε "hello world" θα εκχωρηθεί μόνο το "hello". Υπάρχει κάποιαο λύση; Κάπου είχα διαβάσει κάτι πως να περάσω με for loop και %c ένα string, αλλά δεν πολυκατάλαβα. Ευχαριστώ προκαταβολικά. θα σου προτινα να γραψεις ενα κομματι κωδικα εσυ που να κανει αυτη την δουλεια. με ενα while η for διατρεχεις το string σου () ενω ταυτοχρονα τσεκαρεις για τις λεξεις. ακομα ενα while/for δλδ μεσα στο πρωτο. αν ενδιαφερεσαι το βραδυ μπορω να ποσταρω τον κωδικα
m1cRo Δημοσ. 15 Μαρτίου 2009 Δημοσ. 15 Μαρτίου 2009 Noobικη ερώτηση, αλλά δεν με βοήθησε καθόλου το google... Πώς γίνεται μέσω της scanf να διαβάζω ΚΑΙ whitespace όταν διαβάζω strings; Γιατί ως γνωστόν, η scanf πηδάει whitespace characters. Εάν έχουμε κάτι τέτοιο >char lol[255]; scanf("%s", &lol); και εισάγουμε "hello world" θα εκχωρηθεί μόνο το "hello". Υπάρχει κάποιαο λύση; Κάπου είχα διαβάσει κάτι πως να περάσω με for loop και %c ένα string, αλλά δεν πολυκατάλαβα. Ευχαριστώ προκαταβολικά. > char buf[255]; scanf("%254[^\n]s",buf); puts(buf);
WordUp Δημοσ. 15 Μαρτίου 2009 Μέλος Δημοσ. 15 Μαρτίου 2009 > char buf[255]; scanf("%254[^\n]s",buf); puts(buf); Ευχαριστώ ρε μαν, αλλά μπορείς να μου εξηγήσεις τι ακριβώς κάνει το "%254[^\n], ώστε μην κάνω copypaste κάτι χωρίς να καταλαβαίνω;
Evgenios1 Δημοσ. 15 Μαρτίου 2009 Δημοσ. 15 Μαρτίου 2009 Ευχαριστώ ρε μαν, αλλά μπορείς να μου εξηγήσεις τι ακριβώς κάνει το "%254[^\n], ώστε μην κάνω copypaste κάτι χωρίς να καταλαβαίνω; λογικα θα διαβαζει 254 χαρακτιρες (κοτσανα?)
dark_banishing Δημοσ. 15 Μαρτίου 2009 Δημοσ. 15 Μαρτίου 2009 λογικα θα διαβαζει 254 χαρακτιρες (κοτσανα?) Ναι και σταματάει όταν δει αλλαγή γραμμής. Μέσα στο [ ] βάζεις τι χαρακτήρες δέχεται ή δεν δέχεται. π.χ μπορείς να γράψεις [Α-Ζ] αν βάλεις το σύμβολο ^ από μπροστά σημαίνει ότι δεν δέχεται αυτούς τους χαρακτήρες Οπότε αν γράψεις ^\n σημαίνει ότι δέχεται τα πάντα εκτός από το \n (τα πάντα περιλαμβάνουν και το κενό ανάμεσα στις λέξεις)
GrandGamer Δημοσ. 16 Μαρτίου 2009 Δημοσ. 16 Μαρτίου 2009 Εναλλακτικά μπορείς να χρησιμοποιήσεις τη read() ή την gets() αλλά αν το τρέχεις σε Windows δεν ξέρω αν θα παίξει σωστά.
GrandGamer Δημοσ. 16 Μαρτίου 2009 Δημοσ. 16 Μαρτίου 2009 Βασικά προτείνω τη read(), την gets() δεν είναι η καλύτερη επιλογή, αλλά στην ανάγκη
m1cRo Δημοσ. 16 Μαρτίου 2009 Δημοσ. 16 Μαρτίου 2009 Ακόμα ένας τρόπος > char buf[255]; fgets(buf,10,stdin); puts(buf);
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.