Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

...ασύγχρονα μαθήματα γλώσσας C

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό roman » 25 Μαρ 2011, 09:30

Πολύ ενδιαφέρον και ας κάνω μια παρατήρηση για το thread. Άμα κάποιος δεν καταλαβαίνει τι γίνεται το καλύτερο που μπορεί να κάνει είναι να παρακολουθεί το θέμα σιωπηλά, να μην πρήζει και τα υπόλοιπα μέλη με την ξεροκεφαλιά του.

Στην άσκηση τώρα: Έμενα το sizeof(int*) είναι 4 οπότε αυτό που προκαλεί το πρόβλημα είναι το
Spoiler: show
Τελικά σκέφτηκα να μην αναφέρω τίποτα.
Η απάντηση είναι κάτι που προ-ειπώθηκε. Το θέμα είναι ότι αλλάζοντας την τιμή που εισάγεται, το πρόγραμμα ανταποκρίνεται διαφορετικά. Πιστεύω πως για να δώσει κάποιος συγκεκριμένη και ακριβής απάντηση χρειάζεται αρκετά πολύ εμβάθυνση στο θέμα. Και σαφώς θα είναι σε θέση να απαντήσει και το γιατί άμα αλλάξω σε +=1 θα πάρω Segmentation fault.
No LSB modules are available.
roman
punkTUX
punkTUX
 
Δημοσιεύσεις: 178
Εγγραφή: 11 Φεβ 2009, 15:09
Τοποθεσία: Θεσσαλονίκη
IRC: rwmanos
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό konnn » 25 Μαρ 2011, 12:05

Ένα λάθος μου , ο integer σε 32βιτ καταλαμβάνει 4 bytes.
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό linuxs » 25 Μαρ 2011, 17:06

roman έγραψε:Πολύ ενδιαφέρον και ας κάνω μια παρατήρηση για το thread. Άμα κάποιος δεν καταλαβαίνει τι γίνεται το καλύτερο που μπορεί να κάνει είναι να παρακολουθεί το θέμα σιωπηλά, να μην πρήζει και τα υπόλοιπα μέλη με την ξεροκεφαλιά του.

Στην άσκηση τώρα: Έμενα το sizeof(int*) είναι 4 οπότε αυτό που προκαλεί το πρόβλημα είναι το
Spoiler: show
Τελικά σκέφτηκα να μην αναφέρω τίποτα.
Η απάντηση είναι κάτι που προ-ειπώθηκε. Το θέμα είναι ότι αλλάζοντας την τιμή που εισάγεται, το πρόγραμμα ανταποκρίνεται διαφορετικά. Πιστεύω πως για να δώσει κάποιος συγκεκριμένη και ακριβής απάντηση χρειάζεται αρκετά πολύ εμβάθυνση στο θέμα. Και σαφώς θα είναι σε θέση να απαντήσει και το γιατί άμα αλλάξω σε +=1 θα πάρω Segmentation fault.


Αναφέρεσαι σε εμένα;;;
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό medigeek » 25 Μαρ 2011, 19:39

Off topic:
roman έγραψε:Άμα κάποιος δεν καταλαβαίνει τι γίνεται το καλύτερο που μπορεί να κάνει είναι να παρακολουθεί το θέμα σιωπηλά, να μην πρήζει και τα υπόλοιπα μέλη με την ξεροκεφαλιά του.

Η παρακολούθηση ενός θέματος σιωπηλά δεν επιφέρει θετικά αποτέλεσματα. Ο linuxs απ'ό,τι κατάλαβα είχε κατανοήσει λάθος την ερώτηση της άσκησης (ή του φάνηκε παράξενη). Δεν ήταν ξεροκέφαλος, ήταν άτομο με απορία. Δεν έπρηζε, ρωτούσε για να καταλάβει. Πώς περιμένεις να παρακολουθήσει κάτι που δεν κατάλαβε; :)


Στο θέμα μας... πρόσεξα ότι το πρόγραμμα δεν τελειώνει με exit code 0 ("return 0;").

Κώδικας: Επιλογή όλων
$ gcc -o test test.c
$ ./test
$ echo $?
20


Σημείωση: Το exit code το είδα στο geany με το execute, μην νομίσετε πως ελέγχω το exit code με "echo $?" κάθε φορά. :P
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό medigeek » 25 Μαρ 2011, 19:59

Επίσης υπαρχει ένα warning:

έγραψε:$ gcc -Wall -o test test.c
test.c: In function ‘calculate’:
test.c:13: warning: control reaches end of non-void function


Η γραμμή 13 είναι η κλειστή αγκύλη του calculate:
Κώδικας: Επιλογή όλων
[...]
p[i*3 + 2] += 16;
}


Αγνοήστε τα παραπάνω. Μόλις είδα την απάντηση του konnn.
+1 :thumbup:
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό linuxs » 25 Μαρ 2011, 20:34

medigeek έγραψε:Off topic:
roman έγραψε:Άμα κάποιος δεν καταλαβαίνει τι γίνεται το καλύτερο που μπορεί να κάνει είναι να παρακολουθεί το θέμα σιωπηλά, να μην πρήζει και τα υπόλοιπα μέλη με την ξεροκεφαλιά του.

Η παρακολούθηση ενός θέματος σιωπηλά δεν επιφέρει θετικά αποτέλεσματα. Ο linuxs απ'ό,τι κατάλαβα είχε κατανοήσει λάθος την ερώτηση της άσκησης (ή του φάνηκε παράξενη). Δεν ήταν ξεροκέφαλος, ήταν άτομο με απορία. Δεν έπρηζε, ρωτούσε για να καταλάβει. Πώς περιμένεις να παρακολουθήσει κάτι που δεν κατάλαβε; :)


Στο θέμα μας... πρόσεξα ότι το πρόγραμμα δεν τελειώνει με exit code 0 ("return 0;").

Κώδικας: Επιλογή όλων
$ gcc -o test test.c
$ ./test
$ echo $?
20


Σημείωση: Το exit code το είδα στο geany με το execute, μην νομίσετε πως ελέγχω το exit code με "echo $?" κάθε φορά. :P


Σε ευχαριστώ...γιατί κάτι τέτοιο έγινε. :)

Ο αρχικός τίτλος δεν χαρακτήριζε το θέμα
ο αρχικός κώδικας για μένα δεν ήταν απολύτως σωστός
δεν έτρεχε επειδή είχα 32 βιτ αλλα τώρα τρέχει

τέλοςπάντων, νομιζω μια παρεξήγηση ήταν... ;)
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό simosx » 29 Μαρ 2011, 09:31

Θα ήθελα να ξεκινήσουμε ξανά αυτό το νήμα.

Η αρχική δημοσίευση περιγράφει μια άσκηση/γρίφο για τη γλώσσα C, viewtopic.php?f=61&t=17612
Ο στόχος της άσκησης είναι να διαπιστωθεί η πηγή του προβλήματος.
Αν καταφέρουμε να καταλάβουμε την πηγή του προβλήματος, μαθαίνουμε πολλά για C.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό linuxs » 29 Μαρ 2011, 21:55

simosx έγραψε:Θα ήθελα να ξεκινήσουμε ξανά αυτό το νήμα.

Η αρχική δημοσίευση περιγράφει μια άσκηση/γρίφο για τη γλώσσα C, viewtopic.php?f=61&t=17612
Ο στόχος της άσκησης είναι να διαπιστωθεί η πηγή του προβλήματος.
Αν καταφέρουμε να καταλάβουμε την πηγή του προβλήματος, μαθαίνουμε πολλά για C.

Δεκτό απο εμένα! Μπορώ να πω για άλλη μια φορά αυτό που πιστεύω η θα πάρω "αρνητικές απαντήσεις";;;
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό sokoban4ever » 29 Μαρ 2011, 23:45

Off topic:
linuxs έγραψε:Δεκτό απο εμένα! Μπορώ να πω για άλλη μια φορά αυτό που πιστεύω η θα πάρω "αρνητικές απαντήσεις";;;

Φυσικά και μπορείς να πείς αυτό που πιστεύεις !
:)

Και για το θέμα μας τώρα
θα ήθελα πολύ να μάθω ακριβώς τι γίνεται και δεν εμφανίζει το κείμενο

Aπό ότι έχω καταλάβει λίγο νεφελώδικα
το πρόγραμα γράφει σε περιοχές της μνήμης
λόγο του τρόπου με τον οποίο αποθηκέει στο array p
που είναι κοντά με το κείμενο και επειδή
γράφεται εσφαλμένα το array επαναγράφει "δεδομένα της μνήμης που δεν είναι χαρακτήρες"
και έτσι εξαφανίζεται το κειμενο...
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: Άσκηση C: γιατί δεν τυπώνεται το μήνυμα;

Δημοσίευσηαπό linuxs » 29 Μαρ 2011, 23:54

σαν τι κείμενο περιμένουμε να εμφανιστεί;;; για το printf λες;;;
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Μαθήματα C