| Precedente :: Successivo   | 
	
	
	
		| Autore | 
		Messaggio | 
	
	
		Lokutus Eroe in grazia degli dei
  
 
  Registrato: 08/09/05 22:18 Messaggi: 129
 
  | 
		
			
				 Inviato: 29 Giu 2006 17:50    Oggetto: * problemi con la scanf | 
				     | 
			 
			
				
  | 
			 
			
				Salve!
 
 
ho un problemino col la scanf vorrei prendere da tastiera un stringa con uno spazio all'interno, tipo questa "asd fg"
 
 
ho provato con: scanf("%s", nome_stringa);
 
 
però così mi interpreta lo spazio come fine stringa e mi stampa solo "asd"
 
allora ho provato questo:
 
 
 	  | Codice: | 	 		  int c;
 
for (c=0;T2[c]!='\0';c++)
 
{
 
 scanf("%c", &T2[c]);
 
}
 
T2[c+1]='\0'; | 	  
 
 
ma anche così quando vado a stampare mi stampa solo "asd"......
 
 
la stampa l'ho provata in entrambi i seguenti modi:
 
 
 	  | Codice: | 	 		  printf("%s", T2);
 
 
for (c=0;T2[c]!='\0';c++)
 
{
 
 printf("%c", T2[c]);
 
} | 	  
 
 
 
esiste un modo per leggere da sdtin una stringa senza che questa venga tarpata nel caso contenga uno spazio? | 
			 
		  | 
	
	
		| Top | 
		 | 
	
	
		  | 
	
	
		horus Macchinista
  
  
  Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
  | 
		
			
				 Inviato: 30 Giu 2006 09:13    Oggetto:  | 
				     | 
			 
			
				
  | 
			 
			
				La scanf non può leggere gli spazi, o meglio, li considera come terminatori di riga e quindi tronca l'input.
 
 
La funzione gets dovrebbe essere quello che ti serve. | 
			 
		  | 
	
	
		| Top | 
		 | 
	
	
		  | 
	
	
		Kaya Mortale devoto
  
 
  Registrato: 24/09/05 18:17 Messaggi: 14
 
  | 
		
			
				 Inviato: 14 Set 2006 18:04    Oggetto:  | 
				     | 
			 
			
				
  | 
			 
			
				Forse sarò in ritardo ma ti dico la mia:  mi pare che gets sia stata deprecata, o meglio, considerata potenzialmente pericolosa   
 
prova con la Fgets   | 
			 
		  | 
	
	
		| Top | 
		 | 
	
	
		  | 
	
	
		horus Macchinista
  
  
  Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
  | 
		
			
				 Inviato: 15 Set 2006 09:56    Oggetto:  | 
				     | 
			 
			
				
  | 
			 
			
				Hai ragione  , è una vita che non seguo C, dovrei rimediare...
 
Comunque leggendo in giro sembra che anche la fgets sia dismessa in quanto pericolosa.
 
 
Il suggerimento su quel sito è di usare la getline. | 
			 
		  | 
	
	
		| Top | 
		 | 
	
	
		  | 
	
	
		obelix Comune mortale
  
 
  Registrato: 15/09/06 15:20 Messaggi: 2
 
  | 
		
			
				 Inviato: 15 Set 2006 15:46    Oggetto: Re: * problemi con la scanf | 
				     | 
			 
			
				
  | 
			 
			
				Lo spazio è un separatore per la scanf:
 
 
scanf("%s %s", ns1, ns2);
 
 
sprintf(ns1+strlen(ns1), " %s", ns2);
 
 
Oppure usi gets in un ciclo di for finendo quando trovi il "return" | 
			 
		  | 
	
	
		| Top | 
		 | 
	
	
		  | 
	
	
		Kaya Mortale devoto
  
 
  Registrato: 24/09/05 18:17 Messaggi: 14
 
  | 
		
			
				 Inviato: 20 Set 2006 09:53    Oggetto: Re: * problemi con la scanf | 
				     | 
			 
			
				
  | 
			 
			
				 	  | obelix ha scritto: | 	 		  
 
Oppure usi gets in un ciclo di for finendo quando trovi il "return" | 	  
 
In questo modo però rischi grosso, sopratutto perchè vai a sprecare molta memoria con continue nuove allocazioni.. | 
			 
		  | 
	
	
		| Top | 
		 | 
	
	
		  | 
	
	
		 |