Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* problemi con la scanf
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
Lokutus
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 08/09/05 21:18
Messaggi: 129

MessaggioInviato: 29 Giu 2006 16:50    Oggetto: * problemi con la scanf Rispondi citando

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
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 30 Giu 2006 08:13    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Kaya
Mortale devoto
Mortale devoto


Registrato: 24/09/05 17:17
Messaggi: 14

MessaggioInviato: 14 Set 2006 17:04    Oggetto: Rispondi citando

Forse sarò in ritardo ma ti dico la mia: mi pare che gets sia stata deprecata, o meglio, considerata potenzialmente pericolosa Wink
prova con la Fgets Wink
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Set 2006 08:56    Oggetto: Rispondi citando

Hai ragione Embarassed, è 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
Profilo Invia messaggio privato
obelix
Comune mortale
Comune mortale


Registrato: 15/09/06 14:20
Messaggi: 2

MessaggioInviato: 15 Set 2006 14:46    Oggetto: Re: * problemi con la scanf Rispondi citando

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
Profilo Invia messaggio privato
Kaya
Mortale devoto
Mortale devoto


Registrato: 24/09/05 17:17
Messaggi: 14

MessaggioInviato: 20 Set 2006 08:53    Oggetto: Re: * problemi con la scanf Rispondi

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
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi