Δημοσιεύτηκε: 22 Οκτ 2008, 18:47
Παιδιά, συγνώμη που μπαίνω "σφήνα" αλλά η συζήτηση έκατσε ακριβώς με τον προβληματισμό μου που έχω τις τελευταίες μέρες...
Αποφάσισα τελικά να ασχοληθώ με τη C και άρχισα να διαβάζω το -κλασικό πλέον- βιβλίο "Η Γλώσσα Προγραμματισμού C" των Kerninghan & Ritchie. Τα παραδείγματα-ασκήσεις του βιβλίου βασίζονται στη ANSI C και τον compiler που χρησιμοποιώ φυσικά είναι ο gcc.
Από τη δική σας εμπειρία, υπάρχουν διαφορές της ANSI C με τον compiler gcc; Γιατί σε μια άσκηση ενώ τα έκανα όλα σωστά, δεν μπορούσε να μου τυπώσει το backspace. Σύμφωνα με το site: http://users.powernet.co.uk/eton/kandr2/krx110.html στο οποίο παρατίθονται όλες τις ασκήσεις του εν λόγω βιβλίου, το listing της άσκησης είναι η εξής:
Αλλά παρ' όλα αυτά, τρέχοντας ακόμα και τον δικό τους *σωστό* κώδικα, μου τυπώνει κανονικά τους υπόλοιπους χαρακτήρες εκτός του backspace. Ότι και αν κάνω η μεταβλητή που χρησιμοποιώ για τη μέτρηση του backspace παραμένει μηδενική.
Θα μου πείτε ότι είναι ασήμαντο το πρόβλημα και δεν με απασχολεί τόσο η επίλυσή του συγκεκριμένου κώδικα. Αυτό που με ενδιαφέρει πραγματικά είναι: Θα προκύψουν και άλλα προβλήματα ασυμβατότητας της ANSI C με τον gcc compiler;
Αποφάσισα τελικά να ασχοληθώ με τη C και άρχισα να διαβάζω το -κλασικό πλέον- βιβλίο "Η Γλώσσα Προγραμματισμού C" των Kerninghan & Ritchie. Τα παραδείγματα-ασκήσεις του βιβλίου βασίζονται στη ANSI C και τον compiler που χρησιμοποιώ φυσικά είναι ο gcc.
Από τη δική σας εμπειρία, υπάρχουν διαφορές της ANSI C με τον compiler gcc; Γιατί σε μια άσκηση ενώ τα έκανα όλα σωστά, δεν μπορούσε να μου τυπώσει το backspace. Σύμφωνα με το site: http://users.powernet.co.uk/eton/kandr2/krx110.html στο οποίο παρατίθονται όλες τις ασκήσεις του εν λόγω βιβλίου, το listing της άσκησης είναι η εξής:
- Κώδικας: Επιλογή όλων
#include <stdio.h>
int main()
{
int c, d;
while ( (c=getchar()) != EOF) {
d = 0;
if (c == '\\') {
putchar('\\');
putchar('\\');
d = 1;
}
if (c == '\t') {
putchar('\\');
putchar('t');
d = 1;
}
if (c == '\b') {
putchar('\\');
putchar('b');
d = 1;
}
if (d == 0)
putchar(c);
}
return 0;
}
Αλλά παρ' όλα αυτά, τρέχοντας ακόμα και τον δικό τους *σωστό* κώδικα, μου τυπώνει κανονικά τους υπόλοιπους χαρακτήρες εκτός του backspace. Ότι και αν κάνω η μεταβλητή που χρησιμοποιώ για τη μέτρηση του backspace παραμένει μηδενική.
Θα μου πείτε ότι είναι ασήμαντο το πρόβλημα και δεν με απασχολεί τόσο η επίλυσή του συγκεκριμένου κώδικα. Αυτό που με ενδιαφέρει πραγματικά είναι: Θα προκύψουν και άλλα προβλήματα ασυμβατότητας της ANSI C με τον gcc compiler;