Per la lunghezza di una stringa posso fare benissimo così:
codice:
for(i=0;str[i]!='\0';i++);
paraticamnete questo for incrementa la i fino a che il carattere della stringa di posizione i è uguale al carattere di fine stringa...
In poche parole dopo il ciclo la i assume valore corrispondente alla lunghezza della stringa...
Poi invece se vuoi allocare una stringa direttamente in memoria devi prima di tutto includere la malloc.h...
cmq il codice è questo:
codice:
#include<stdio.h>
#include<malloc.h>
char *str;
int lung;
main() {
printf("\n\nInserire la grandezza della stringa:");
scanf("%d",&lung);
str=(char *)malloc(sizeof(char)*lung);
//alloco la stringa di dimensione di un charb moltiplicato per il numero di caratteri che voglio
//ora la stringa è stata creata e la posso usare come una stringa normalissima
printf("\n\nInserisci una stringa:");
scanf("%s",str);
printf("\nLa stringa inserita è %s",str);
//posso anche accedere ad una singola cella
str[4]='c';
}
ecco questo codice alloca in memoria una stringa della dimensione che vuoi...
ahh inoltre ricordati che alla fine della stringa devi mettere il \0...
ciao ciao