Δημοσιεύτηκε: 16 Φεβ 2012, 17:03
από Star_Light
Κώδικας: Επιλογή όλων

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

int main()
{
int slen;
char *s;

printf(" How long the string? : ");
scanf("%d" , &slen);

printf(" Give a string : ");
fgets(s , slen , stdin);

s = malloc(slen + 1);

if( s == NULL)
printf(" malloc() failed ");

printf(" %lu " , strlen(s) + 1);
puts(s);

return 0;
}


προσπαθω να φτιαξω ενα παραδειγμα τελοςπαντων με μεγεθος που θα δινει ο χρήστης.
Υποτιθεται πως αυτο ειναι το δυναμικο που λεμε... και ακομη δεν μου κολλαει καπως στο αρχικο παραδειγμα
που έδωσες το #define στην αρχη.... δεν ξερω εφοσον το οριζεις εξαρχης νομιζω ειναι προκαθορισμενο ειτε ο χρηστης δωσει
10 ειτε 20..... εκτος και αν εσωτερικα η malloc παντα δεσμευει ή 10 ή 20 τα ελευθερωνει και το #define MAXSLEN(80+1) ειναι απλα
ενα πάνω οριο το οποιο βαζεις εσυ για να μην σου βαλει το ιδιο το λειτουργικο συστημα . Και στην περιπτωση των στατικων πινακων
το #define MAXSLEN(80+1) αν δωσεις εσυ 20 ή 10 τοτε ολα τα αλλα μενουν κενα...... στη μνημη.... καταλαβαινεις τι ρωταω???