Frasi da tastiera C

di il
1 risposte

Frasi da tastiera C

Salve, io ho scritto una funzione in C che legge delle frasi inviate da tastiera....finché invio una sola frase va bene, ma poi ho difficoltà nel caso in cui devo inviarne un numero N. Il pezzo di listato che ho scritto è il seguente:
:
for (i=0;i<N;i++){
while ((ch = getchar()) != '\n') {
// Creo un nuovo elemento in s e piazzo in coda
// il nuovo carattere
p = (char*) realloc( p, ++dim );	// faccio un pre-incremento di size
p[dim-1] = ch;

// Termino la stringa correttamente con un '\0' in coda
if ( dim > 0 )
p[dim] = 0;

}


}

return p;
}
p l ho definito come char *p, il problema è che quando faccio printf nel main mi stampa tutte le frasi in un'unica riga e attaccate....come potrei risolvere il problema? Grazie!

1 Risposte

  • Re: Frasi da tastiera C

    Dovresti cambiarlo in
    
    	for (i=0;i<N;i++)
    	{
    		dim=0;
    		p=NULL;
    		
    		while ((ch = getchar()) != '\n') 
    		{
    			p = (char*) realloc( p, ++dim );   
    			p[dim-1] = ch;
    		}
    		p = (char*) realloc( p, ++dim ); 
    		p[dim-1] = 0;
    
    		printf("Frase: %s\n", p);
    
    		free(p);
    	}
    
Devi accedere o registrarti per scrivere nel forum
1 risposte