La mia idea era quella di sostituire praticamente ovunque l'uso degli array con la funzione malloc (per vedere se effettivamente era una strada percorribile che poteva offrire vantaggi effettivi), per questo ero interessato a "riempire" la memoria allocata in qualche modo. Mi guarderò la funzione memcpy (per l'inizializzazione a 0 dovrei utilizzare la calloc() se non erro) per dare valori alla mia memoria.
Nel caso dove io non abbia una stringa [quindi ad esempio: int *numeri = malloc (10*sizeof(int)) ] come posso ottenere la lunghezza di 'numeri'? la strlen non funziona in quanto accetta solamente stringhe (char*).
Un'altra cosa che stamattina mi ha dato da fare è stato questo programma:
int *arr_el_com(int *stringa1, int *stringa2, int size1, int size2){
if (size1 >= size2){
int *nuovovettore = malloc((size1)*sizeof(int));
int l = 0;
for (int i = 0; i < size1; ++i){
for (int j = 0; j < size2; ++j){
if (stringa1[i] == stringa2[j]){
nuovovettore[l] = stringa1[i];
++l;
}
}
}
return nuovovettore;
else
return NULL;
}
Questa funzione prende due vettori classici e le loro dimensioni per restituire un vettore con gli elementi comuni dei due (se e solo se la dim della stringa1>= dim stringa2). Funziona tutto bene, ma il vettore ritornato non si limita solo agli elementi comuni, ma anche ad altri elementi non inizializzati. Sapete identificare il mio errore?
Ringrazio