mdema@diesel
2008-09-13 22:20:42 UTC
Salve a tutti.
Premetto che sono un principiante in C.
Io ho la necessita di creare una stringa di lunghezza arbitraria (che
non sia limitata insomma da alcuna lunghezza limite).
Leggendo un po' in rete e sviluppando quello che ho trovato, ho scritto
il seguente codice:
int getString(char *s){
unsigned long i=0;
char c;
if(!(s=(char*)malloc(sizeof(char))))
{
return -1;
}
while(isspace(c = getchar())); // ignora eventuali spazi iniziali
do // cicla finchè non incontra uno spazio
{
s[i]=c;
i++;
if(!(s=(char*)realloc(s, i)))
{
return -1;
}
}while(!(isspace(c=getchar())));
s[i]='\0';
return 0;
}
void main(){
char *stringa;
int a,b;
scanf("%d %d",&a,&b);
getString(stringa);
printf("%d %d %s",a,b,stringa);
}
Il mio problema è che non stampa la stringa immessa da scehrmo! Ho
provato a mettere vari printf dentro alla funzione getString e ho
verificato che, alla fine dell'esecuzione, in s c'è effettivamente la
stringa immessa in input....solo che poi non riesco a passarla al main.
Qualcuno mi spiega dove sto sbagliando??
Grazie mille.
Premetto che sono un principiante in C.
Io ho la necessita di creare una stringa di lunghezza arbitraria (che
non sia limitata insomma da alcuna lunghezza limite).
Leggendo un po' in rete e sviluppando quello che ho trovato, ho scritto
il seguente codice:
int getString(char *s){
unsigned long i=0;
char c;
if(!(s=(char*)malloc(sizeof(char))))
{
return -1;
}
while(isspace(c = getchar())); // ignora eventuali spazi iniziali
do // cicla finchè non incontra uno spazio
{
s[i]=c;
i++;
if(!(s=(char*)realloc(s, i)))
{
return -1;
}
}while(!(isspace(c=getchar())));
s[i]='\0';
return 0;
}
void main(){
char *stringa;
int a,b;
scanf("%d %d",&a,&b);
getString(stringa);
printf("%d %d %s",a,b,stringa);
}
Il mio problema è che non stampa la stringa immessa da scehrmo! Ho
provato a mettere vari printf dentro alla funzione getString e ho
verificato che, alla fine dell'esecuzione, in s c'è effettivamente la
stringa immessa in input....solo che poi non riesco a passarla al main.
Qualcuno mi spiega dove sto sbagliando??
Grazie mille.