PDA

Visualizza la versione completa : [C] Da standard input a stringa


noiseimpera
15-03-2011, 18:58
Ciao a tutti,
devo memorizzare il contenuto dello standard input in una stringa. Ovviamente non so quanto puņ essere lungo lo standard input e quindi inizialmente mi creo staticamente un buffer di 1000 posizioni con:


char buffer [1000];

successivamente vengo a conoscenza della lunghezza dello stdin e vorrei ridimensionare il mio buffer, quindi mi viene in mente la realloc, ma se faccio questo:


buff[0]=(char*) realloc((void*)buff[0],sizeof(i+1));

gcc si lamenta. Quale misfatto compio?

shodan
15-03-2011, 19:11
Il peggiore che puoi immaginare. Quel buffer č sullo stack e tale rimane. Per fare quello che ti serve, alloca il buffer con una malloc.

noiseimpera
15-03-2011, 19:29
se faccio in questo modo:


char* buff;
buff=(char*)malloc(sizeof(1000));
while((buff[i]=fgetc(stdin))!=EOF){
i=i+1;
}
buff[i]='\0';
buff=(char*) realloc((void*)buff,sizeof(i+2));

la realloc mi da problemi in memoria(invalid next size) :jam:

shodan
15-03-2011, 19:55
buff=(char*)malloc(1000*sizeof(char));

Loading