μαρια123 Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 καλησπερα, εχω μια ασκηση και εχς κανει καποια πραγματα απλα δεν ξερω αν ειναι σωστη. η ασκηση ειναι η εξης¨ Γράψτε ένα πρόγραμμα το δημιουργεί ένα αρχείο με την ονομασία askisi2.txt και θα γράφει μέσα σε αυτό δύο φράσεις που θα του δίνει ο χρήστης. Αφού τρέξτε το πρόγραμμα ανοίξτε το αρχείο με το Σημειωματάριο (Notepad) για να σιγουρευτείτε ότι περιέχει τις φράσεις που έδωσε ο χρήστης. και εγω εχω κανει αυτο¨ #include "stdio.h" main () { char str[100]; FILE * fp; fp = fopen("askisi2.txt", "w"); if (fp != 0) { fprintf(fp, "Hello\n"); fprintf(fp, "Bye\n"); scanf("%s",str); fclose(fp); } } ειναι σωστο?
nspyrou Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 καλησπερα, εχω μια ασκηση και εχς κανει καποια πραγματα απλα δεν ξερω αν ειναι σωστη. η ασκηση ειναι η εξης¨ Γράψτε ένα πρόγραμμα το δημιουργεί ένα αρχείο με την ονομασία askisi2.txt και θα γράφει μέσα σε αυτό δύο φράσεις που θα του δίνει ο χρήστης. Αφού τρέξτε το πρόγραμμα ανοίξτε το αρχείο με το Σημειωματάριο (Notepad) για να σιγουρευτείτε ότι περιέχει τις φράσεις που έδωσε ο χρήστης. και εγω εχω κανει αυτο¨ #include "stdio.h" main () { char str[100]; FILE * fp; fp = fopen("askisi2.txt", "w"); if (fp != 0) { fprintf(fp, "Hello\n"); fprintf(fp, "Bye\n"); scanf("%s",str); fclose(fp); } } ειναι σωστο? Δεν νομίζω αυτό που κάνεις οτι είναι αυτό που σου ζητάει η άσκηση. Θα πρέπει να γράφεις στο αρχείο τις 2 φράσεις που Ο ΧΡΗΣΤΗΣ σου έχει δώσει, όχι να τις γράφεις εσύ: > printf("Εισάγετε φράση 1:"); gets(str); fprintf(fp, str); printf("\nΕισάγετε φράση 2:"); gets(str); fprintf(fp, str); fclose(fp); έτσι δεν είναι? θα το έκανα με gets() (εγώ προσωπικά) ... [/code]
μαρια123 Δημοσ. 27 Μαΐου 2012 Μέλος Δημοσ. 27 Μαΐου 2012 εισαι σιγουρος? εγω νομιζω οτι πρεπει να τις δωσουμε εμεις τις φρασεις
nspyrou Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 εισαι σιγουρος? εγω νομιζω οτι πρεπει να τις δωσουμε εμεις τις φρασεις Γράψτε ένα πρόγραμμα το δημιουργεί ένα αρχείο με την ονομασία askisi2.txt και θα γράφει μέσα σε αυτό δύο φράσεις που θα του δίνει ο χρήστης. Αφού τρέξτε το πρόγραμμα ανοίξτε το αρχείο με το Σημειωματάριο (Notepad) για να σιγουρευτείτε ότι περιέχει τις φράσεις που έδωσε ο χρήστης. Νομίζω οτι το Bold & Underline στα λέει όλα
μαρια123 Δημοσ. 27 Μαΐου 2012 Μέλος Δημοσ. 27 Μαΐου 2012 Γράψτε ένα πρόγραμμα το δημιουργεί ένα αρχείο με την ονομασία askisi2.txt και θα γράφει μέσα σε αυτό δύο φράσεις που θα του δίνει ο χρήστης. Αφού τρέξτε το πρόγραμμα ανοίξτε το αρχείο με το Σημειωματάριο (Notepad) για να σιγουρευτείτε ότι περιέχει τις φράσεις που έδωσε ο χρήστης. Νομίζω οτι το Bold & Underline στα λέει όλα ωχ δικιο εχεις!!!!!!
nspyrou Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 ωχ δικιο εχεις!!!!!! Διάβαζε καλύτερα τις προσφωνήσεις σου, είναι κρίμα να χάσεις τους βαθμούς της άσκησης από τέτοιο λάθος ..
μαρια123 Δημοσ. 27 Μαΐου 2012 Μέλος Δημοσ. 27 Μαΐου 2012 Διάβαζε καλύτερα τις προσφωνήσεις σου, είναι κρίμα να χάσεις τους βαθμούς της άσκησης από τέτοιο λάθος .. να σε ρωτησω και κατι αλλο? εχω αυτο το προγραμμα #include <stdio.h> void makeDouble(int y) { y = y * 2; } main () { int x; printf("Dwse ari8mo"); scanf("%d", &x); makeDouble(x); printf("H nea timi tis metablitis einai %d", x); } και η ασκηση μου ζηταει να εξηγησω γιατι η συναρτηση που περιεχεται δεν διπλασιαζει την τιμη της παραμετρου που της δινουμε. αλλα δεν μπορω να βρω πουθενα το λαθος!
migf1 Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 ... θα το έκανα με gets() (εγώ προσωπικά) ... Γιατί με gets(); Δεν παρέχει προστασία από buffer overruns... με fgets() καλύτερα, με την οποία μπορεί να κοντρολάρει το πλήθος των χαρακτήρων που θα αναγνωστούν. ΥΓ. Btw, η gets() καταργήθηκε (επιτέλους) στο C11 standard.
nspyrou Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 Γιατί με gets(); Δεν παρέχει προστασία από buffer overruns... με fgets() καλύτερα, με την οποία μπορεί να κοντρολάρει το πλήθος των χαρακτήρων που θα αναγνωστούν. ΥΓ. Btw, η gets() καταργήθηκε (επιτέλους) στο C11 standard. Επειδή μιλάει για εργασία, και συνήθως χρησιμοποιούν τον Bloodshed DEV C++, είναι πιο κοντά στα πρότυπα που τους διδάσκουν. Γι'αυτό και επέλεξα την gets(). Άλλωστε δεν νομίζω σε αυτό το επίπεδο να τους νοιάζουν ιδιαίτερα τα buffer overruns
migf1 Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 Επειδή μιλάει για εργασία, και συνήθως χρησιμοποιούν τον Bloodshed DEV C++, είναι πιο κοντά στα πρότυπα που τους διδάσκουν. Γι'αυτό και επέλεξα την gets(). Άλλωστε δεν νομίζω σε αυτό το επίπεδο να τους νοιάζουν ιδιαίτερα τα buffer overruns Σε αυτή την περίπτωση ίσως είναι καλύτερα να χρησιμοποιήσει scanf() μιας και η gets() είναι έτσι κι αλλιώς marked as depreciated από το C99 ΥΓ. Προσωπικά είμαι της άποψης πως θα πρέπει εξαρχής να μαθαίνουν να κάνουν handle τα string overflows στο input, αλλιώς αναπτύσσουν bad-habits. Το συγκεκριμένο bad-habit για την είσοδο strings (είτε με scanf() είτε me gets() ) οδηγεί με μαθηματική ακρίβεια σε προβληματικό κώδικα.
moukoublen Δημοσ. 27 Μαΐου 2012 Δημοσ. 27 Μαΐου 2012 Ρε παιδιά, γιατί δεν επισημαίνει κανείς το βασικό πρώτα από όλα, ότι μιλάμε για γλώσσα C και όχι C++. Οποτε, μαρία123 (που εύχομαι να είσαι άντρας με fake γυναικείο nick γιατί αποδεικνύεις περίτρανα πως συμπεριφέρεται ο κόσμος του forum εντελώς διαφορετικά στα ίδια post ανάλογα με το φύλο του μέλους. Κοινώς αν το nick σου ήταν μάριος123 τώρα θα σου είχαν σύρει τα μύρια όσα) η γλώσσα που γραφεις είναι C. Έχει μεγάλη διαφορα από τη C++ και θα τη μάθεις αργότερα στη σχολη σου. Απλά επειδή μάλλον το περοβάλλον που έχεις κατεβάσει λέγεται DevC++ θεωρείς ότι είναι όλα C++. Δεν είναι. Απλά στο DevC++ (για λόγους που θα καταλάβεις αν ψάξεις σε αλλα threads τοθ forum) μπορείς να γράψεις και τις 2 γλώσσες.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα