Buongiorno,
visto che sono all'inizio con i programmi che contemplino la allocazione dinamica della memoria vorrei sapere se, secondo voi,il programma seguente è corretto, e se risponde effettivamente a quanto chiesto dall'esercizio (non ho la soluzione):
la cosa che non capisco, in particolare, è il fatto che come dimensione allocata mi restituisce sempre 4codice:/*Scrivere un sottoprogramma che riceve come parametro una stringa. Il sotto- programma alloca un'area di memoria della dimensione strettamente necessaria a contenere la stringa stessa, copia la stringa ricevuta in ingresso all'interno di tale area e la restituisce al chiamante. Scrivere un programma che chiede all'utente una stringa di massimo 50 carat- teri. Il programma richiama il sottoprogramma precedentemente denito, e stampa la stringa da esso restituita e, prima di terminare, dealloca la memoria allocata dinamicamente.*/ #include<stdio.h> #include<stdlib.h> typedef char *pointertype; pointertype p; pointertype f(char *a,int MAX); int cont; void main() {int MAX=50; char a[MAX]; int i,size; printf("inserire stringa: "); fgets(a,50,stdin); cont=0; for(i=0;i<MAX;i++) {if(a[i]!='\n') cont++; else break;} p=f(a,MAX); size=sizeof(p); printf("Dimensione della allocazione: %d\n",size); printf("Stringa:%s\n\n",p); free(p); p=NULL; system("PAUSE");} pointertype f(char *a,int MAX) {int i; typedef char *pointertype; pointertype ris; ris=(char*)malloc(sizeof(char)*(cont+1)); for(i=0;i<cont;i++) ris[i]=a[i]; ris[cont]='\0'; return(ris);}, indipendentemente dalla stringa che digito...
grazie.

, indipendentemente dalla stringa che digito...
Rispondi quotando