Miky-Maous Δημοσ. 10 Σεπτεμβρίου 2009 Δημοσ. 10 Σεπτεμβρίου 2009 Στον παρακάτω κώδικα η συνάρτηση func2 θα πρέπει να μου επιστρέφει έναν πίνακα ακεραίων με στοιχεία τους αριθμούς από το a μέχρι και το b, παρόλαυτα για κάποιο λόγο δεν λειτουργεί. Ο compiler είναι Bloodshed Dev-C++ σε Windows. #include <stdio.h> #include <stdlib.h> char *func(char *s, int n) { char *s2; int i; s2=(char *) malloc(n+1); for (i=0;i<n;i++) s2=s; s2[n]='\0'; return s2; } int *func2(int a, int { int *s2; int i; s2 = (int *) malloc((b-a+1)*sizeof(int)); for (i=a;i<=b;i++) { s2[i-a]=i; } return s2; } main() { char *s = "Hello"; printf("%s\n",func(s,2)); printf("%d",func2(3,7)); getchar(); } Για κάποιο λόγο επίσης οπώς είδα στην προεπισκόπηση ο κώδικας στο μήνυμα εμφανίζεται εναλλάξ από μικρά σε κεφαλαία μετά από καθε =
teo64x Δημοσ. 10 Σεπτεμβρίου 2009 Δημοσ. 10 Σεπτεμβρίου 2009 Κατ' αρχάς, για κώδικα χρησιμοποιούμε το CODE tag ή (προσωπική προτίμηση) το PHP tag.
ippo00 Δημοσ. 10 Σεπτεμβρίου 2009 Δημοσ. 10 Σεπτεμβρίου 2009 Βαριέμαι να ελεγξω τις συναρτήσεις έτσι όπως τις έκανες paste στο forum αλλά το print που κάνεις δεν κάνει dump τον πίνακα..
Miky-Maous Δημοσ. 10 Σεπτεμβρίου 2009 Μέλος Δημοσ. 10 Σεπτεμβρίου 2009 Εχεις δικιο απλα κι εγω τωρα μαθαινω και ασχολουμαι με forum και προγραμματισμο. Παντως μου φαινεται οτι το λαθος ειναι στην printf η οποια δεν πρεπει να ειναι καταλληλη για επιστροφη int αλλα μονο για string
C6WGMN Δημοσ. 10 Σεπτεμβρίου 2009 Δημοσ. 10 Σεπτεμβρίου 2009 > #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> char *func(const char *str, size_t n) { char *p = malloc(n+1); if(p) { strncpy(p, str, n); p[n] = 0; } return p; } int *func2(int a, int { int *d; size_t n = b - a + 1; assert(b >= a); if(d = malloc(n * sizeof *d)) for(i = 0; i < n; d[i] = a + i, i++); return d; } int main(void) { char *str = func("Hello", 2); char *d = func2(3, 7); size_t i; if(str) printf("str = '%s'\n", str); for(i = 0; d && i < 5; i++) printf("d[i] = %d\n", d[i]); free(str); free(d); return 0; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.