|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2006
Messaggi: 133
|
[C] minuscole in maiuscole!!!
ciao ragazzi, per esercizio sto cercando di far un programmino semplice..senza funzioni, che riesca a convertire una stringa di minuscole in lettere maiuscole:
il problema è che se inserisco una frase con spazio, esempio ciao bella mi da in output solo CIAO cioè si blocca allo spazio!!! quale è il problema? ecco il codice: Codice PHP:
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Perché scanf si ferma quando incontra un carattere "whitespace". Per leggere l'intera riga inserita puoi usare gets: LINK
Nota quello che c'è scritto nella descrizione nel link che ti ho riportato: sarebbe più sicuro utilizzare fgets con parametro stdin perché puoi specificare un massimo di caratteri da leggere e l'altra differenza (che non lo rende più sicuro ma è una differenza) è che fgets include il carattere di newline (\n) mentre gets no. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Meglio imparare a non usare mai gets, ma solo fgets mettendo stdin come ultimo parametro.
http://www.cplusplus.com/reference/c.../cstdio/fgets/ C' un modo semplicissimo per fare quel programma usando getchar e putchar fino a quando non si legge l'invio. Ultima modifica di cionci : 16-12-2009 alle 09:08. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 1271
|
Le funzioni isspace e isalpha fanno al caso tuo. Dovresti sapere che la differenza tra un carattere minuscolo e uno maiuscolo è una costante, puoi usare quella e addizionare/sottrarre a seconda delle esigenze, se non vuoi usare le funzioni della libreria standard.
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
La costante si può esprimere come 'a' - 'A'
![]() Basta controllare che sia un carattere minuscolo, quindi isalpha ed isspace non gli servono. Se è un carattere minuscolo modifico il carattere. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
format string alternativo per scanf: "%80[^\n]"
il numero 80 indica che la scanf deve leggere al massimo 80 caratteri incluso NUL, quindi l'argomento successivo deve essere un puntatore ad un vettore di 80 char: Codice:
char szLine[80]; if (scanf("%80[^\n]", szLine) < 1) { // errore di I/O } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:39.