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

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

Δημοσ.

Η fflush(stdin) δουλεύει μονάχα σε Windows, παραβιάζοντας τα πρότυπα της C. Δηλαδή το πρόγραμμά σου δεν πρόκειται να δουλεύει πουθενά αλλού.

 

Κάτι άλλο, στη C δεν χρειάζεται να κάνεις escape τα single quotes, ούτε το ήδη escaped \n.

 

Σχετικά με το διάβασμα εισόδου από κονσόλα σε C, ρίξε μια ματιά εδώ (και κυρίως στο 2ο link που δίνω εκεί).

  • Like 1
  • Απαντ. 32
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Δημοσ.

σε ευχαριστω για τα λινκς , θα τα διαβασω, απλα θελω να σου πω πως δεν μπορω να χρησιμοποιησω εντολες/πραγματα γενικα που ο καθηγητης δεν μας εχει πει ακομα.

Δημοσ.

Η fflush(stdin) δουλεύει μονάχα σε Windows, παραβιάζοντας τα πρότυπα της C. Δηλαδή το πρόγραμμά σου δεν πρόκειται να δουλεύει πουθενά αλλού.

 

Κάτι άλλο, στη C δεν χρειάζεται να κάνεις escape τα single quotes, ούτε το ήδη escaped \n.

 

Σχετικά με το διάβασμα εισόδου από κονσόλα σε C, ρίξε μια ματιά εδώ (και κυρίως στο 2ο link που δίνω εκεί).

 

Aκριβώς. Εκει ξεχωρίζουν και τα καλά βιβλια που αναφέρουν τα portability tips :D

Δημοσ.

Κάτι της μορφής;

 

scanf("%s", &str)

 

a = str[0];

b = str[1]; //εαν είναι 1 μόνο χαρακτήρας αυτό θα είναι \0 ή \n

 

switch(a){

 

case '&':

    if(b == '&')

        //make operation &&

    else

        //make operation &

    break;

 

case '|':

 

    if(b == '|')

        //make operation ||

    else

        //make operation |

    break;

 

}

σορυ επειδη ειμαι noobas , καταλαβαινω απο το παραπανω πως οταν πατας & κανει την πραξη && και ποτε κανει την πραξη &??? γιατι λεει else do &  , else δλδ ? αν πατησω π.χ Κ θα κανει την & πραξη ?

Τωρα που ειπατε για βιβλια, εγω διαβαζω το : Η γλωσσα C σε βαθως , των εκδοσεων κλειδαριθμος, τι εχετε να πειτε για το βιβλιο ? εγω το βρισκω αρκετα καλο προς το παρον 

Δημοσ.

σε ευχαριστω για τα λινκς , θα τα διαβασω, απλα θελω να σου πω πως δεν μπορω να χρησιμοποιησω εντολες/πραγματα γενικα που ο καθηγητης δεν μας εχει πει ακομα.

Πολύ σωστά! Δεν έχετε μάθει ακόμα strings?

Δημοσ.

functions Ειναι αυτα ε? οχι ακομα , μεσα στον Νοεμβρη

Οπότε αντί για scanf() δοκίμασε να διαβάζεις τα 2 σύμβολα κάπως έτσι, ώστε να μη χρειάζεσαι την ασύμβατη fflush(stdin)...

int main( void )
{
	int i;
        char c='\0', c1='\0', c2='\0'; // ορισμός & αρχικοποίηση σε '\0' τριών char

	// διάβασμα μέσω c μέχρι 2 χαρακτήρες από την κύρια είσοδο
	// ή μέχρι να πατηθεί ENTER (\n)
	for (i=0; i < 2 && '\n' != (c=getchar()); i++) {
		if (0 == i)	// αν είμαστε στην 1η επανάληψη της λούπας
			c1 = c;
		else		// αν είμαστε στην 2η επανάληψη της λούπας
			c2 = c;
	}

	// χειροκίνητο flush περιττών χαρακτήρων από την γραμμή εισόδου
	if ( '\n' != c )	// αν το προηγούμενο for ΔΕΝ έχει σταματήσει λόγω ENTER
		while ('\n' != getchar() ) // διάβασε κι αγνόησε ότι περισσεύει μέχρι το ENTER
			; /* void */

	printf( "%c%c\n", c1,c2 );

	// έλεγξε εδώ τις τιμές των c1 και c2, και προχώρα ανάλογα

	return 0;
}
Σημείωση: είναι γραμμένο μόλις τώρα, στο πόδι, οπότε μπορεί να μου έχει ξεφύγει κάτι. Σε 4-5 δοκιμές που έκανα δείχνει να λειτουργεί πάντως as intended. Το ζουμί είναι να κάνεις χειροκίνητα flush την γραμμή εισόδου αν και όταν χρειάζεται.
Δημοσ.

επειδη εχω μονο 3 μηνες που ασχολουμε με προγραμματισμο κια δεν πολυ καταλαβαινω ακριβως τι εκανες στον κωδικα , σου ειναι ευκολο να κανεις ενα edit sto post sou και με σχολια διπλα στον κωδικα να εξηγισεις τι κανεις ?

Δημοσ.

Κατι τέτοιο ειναι εντελώς λάθος διοτι διαφορετικα υπολογιστικά συστηματα μπορει να χρησιμοποιούν διαφορετικά σύνολα χαρακτήρων.

..

Τι εννοείς; Στην αρχή με ένα type cast βρίσκεις σε ποιον αριθμό ανήκουν οι χαρακτήρες αυτοί και χρησιμοποιείς αυτή τη μεταβλητή τύπου int για να κάνεις τη σύγκριση μετά.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...