Δημοσιεύτηκε: 27 Ιούλ 2011, 13:48
από Tasudo
Αντιμετωπίζω πρόβλημα στην χρήση δυναμικής διαχείρισης μνήμης(αρχάριος βλέπετε)μαζί με δομές struct
Συγκεκριμένα κάνω λάθος πιστεύω στον τρόπο που θέτω την διαχείριση σε σχέση με το αντικείμενο που θέλω


Πιο συγκεκριμένα

Στο συγκεκριμένο πρόγραμμα ενώ μπορεί να δώσω ως input για numwords το 3
Οταν μπαίνει μέσα στην for στην οποία γίνεται εισαγωγή των λέξεων
Η scanf "εκτελείται" μόνο μία φορά κατά την εκτέλεση ενώ τα print συνεχίζουνε σύμφωνα με τον δοσμένο αριθμό.

Τι λάθος κάνω???? :problem:
Σημείωση:το πρόγραμμα είναι ημιτελές


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

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

#define WORDSIZE 20
#define MAXWORDS 5


typedef struct {
char *word; /* metabliti xaraktiron*/
char *digits; /* metabliti psifion*/
} infoT;


int main (int argc, char *argv[]) {

infoT *pairs;
char format_str[20];
int numwords;
int i;

pairs = NULL; /* initialize pairs*/
numwords = 0;
sprintf(format_str,"%%%ds",WORDSIZE-1);

do {
printf("Enter number of words: "); /* Minima eisagogis arithmou lekseon*/
scanf("%d", &numwords); /* Eisagogi arithmou lekseon apo to pliktrologio*/
if ( (numwords < 0) || (numwords > MAXWORDS) ) /* Elegxos sostis eisagogis arithmou lekseon*/
printf("Wrong number input!\n");

}while ( (numwords < 0) || (numwords > MAXWORDS) );

pairs = (infoT *)realloc(pairs,numwords*sizeof(infoT)); /* Dunamiki desmeusi mnimis gia numword pairs*/
if ( pairs == NULL ) {
printf("Memory allocation error\n");
return (1);
}

for (i=0; i<numwords; i++) {
printf("Enter word: "); /* Minima eisagogis leksis*/
scanf(format_str,pairs[i].word); /* Eisagogi leksis apo to pliktrologio*/


}




printf("END\n");

return 0;
}