Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
NDH
Δημοσιεύσεις: 403
Εγγραφή: 03 Φεβ 2009 13:56
Επικοινωνία:

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από NDH » 16 Ιουν 2010 22:58

Έχουμε μια άσκηση που ζητάει να κάνουμε προγραμμα στη c το οποίο να διαβάζει και να αποθηκεύει στη μνήμη 20 αλφαριθμητικά το πολύ 26 χαρακτίρων.Έχουμε χαθεί και δε μπορούμε να καταλάβουμε τι ενοεί με τα 20 αλφαριθμητικά των 26 χαρακτήρων.Οτι μπορεί ο καθένας ας ρίξει στο τραπέζι και please οχι απαντήσεις του στυλ προσπαθήστε και σας λεμε γιατί δεν φτάνει ο χρόνος.

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από soteres2002 » 17 Ιουν 2010 00:54

RE-EDIT:

Σου ζητάει ουσιαστικά να αποθηκεύσεις σε μία δομή 20 strings με μέγεθος το πολύ 26 χαρακτήρων.

Είναι βασική γνώση αν ξέρεις C.

Θέλεις έναν double pointer char **strings.

Κάνεις strings = (char **)malloc(26 * sizeof(char *));

και μετά δεσμεύεις τις 26 θέσεις του πίνακα, δηλαδή φτιάχνεις τη β' διάσταση ώς εξής:

for(int i = 0; i < 20; i++)
strings = (char *)malloc(26*sizeof(char));

μετά πας και βάζεις σε κάθε strings τις αλφαριθμητικές τιμές που θες, δηλαδή ένα string σε κάθε θέση του πίνακα.

Αυτό γίνεται με τη συνάρτηση strcpy() της string.h
Τελευταία επεξεργασία από το μέλος soteres2002 την 17 Ιουν 2010 02:37, έχει επεξεργασθεί 2 φορές συνολικά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από dva_dev » 17 Ιουν 2010 01:51

Φίλε soteres2002 μόλις κόπηκες με Segmentation fault, Memory access violation, Memory corruption, ή κάτι ανάλογο... (νομίζω θα καταλάβεις το γιατί)

Σε περιμένουμε στο επόμενο εξάμηνο, πιο διαβασμένο και πιο προσεκτικό
:reading:

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από virxen75 » 17 Ιουν 2010 02:28

τέτοια ώρα μόνο αυτό μου έρχεται στο μυαλό

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <string.h>

int main&#40;&#41;&#123;
    char pinakas&#91;20&#93;&#91;26&#93;;
    int i;
    for&#40;i=0;i<20;i++&#41;&#123;
        printf&#40;"\ndose to alfari8mitiko %d&#58;",i+1&#41;;
        fgets&#40;pinakas&#91;i&#93;,sizeof&#40;pinakas&#91;i&#93;&#41;,stdin&#41;;
        if &#40;pinakas&#91;i&#93;&#91;strlen&#40;pinakas&#91;i&#93;&#41;-1&#93;=='\n'&#41; 
            pinakas&#91;i&#93;&#91;strlen&#40;pinakas&#91;i&#93;&#41;-1&#93;='\0';
        printf&#40;"you entered#%s#",pinakas&#91;i&#93;&#41;;
        fflush&#40;stdin&#41;;
    &#125;
    getchar&#40;&#41;;
    return 0;
&#125;

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από soteres2002 » 17 Ιουν 2010 02:35

Shit, μου έφυγε ένα "*" στο sizeof() στη πρώτη δέσμευση :lol:
Έκανα re-edit το comment...

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από virxen75 » 17 Ιουν 2010 02:38

soteres2002 έγραψε:Shit, μου έφυγε ένα "*" στο sizeof() στη πρώτη δέσμευση :lol:
Έκανα re-edit το comment...
strings = (char **)malloc(26 * sizeof(char *));
μηπως να το ξαναδείς?

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από soteres2002 » 17 Ιουν 2010 02:46

Ναι, βασικά κανονικά το 26 πρέπει να είναι 20, και για κάθε στρινγκ να δεσμεύσεις 26 θέσεις χαρακτήρων...

πού αλλού υπάρχει prob?


Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από soteres2002 » 17 Ιουν 2010 13:18

Έτσι κι αλλιώς μπαίνουν NIL bytes με τη χρήση της strcpy().

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ασκήση στην C για εξεταστική please help(γράφουμε αύριο)

Δημοσίευση από dva_dev » 17 Ιουν 2010 14:22

Αυτό είναι το πρόβλημα. Δεν έχεις χώρο για να μπεί το extra byte.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης