Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque
Dal salotto al giardino, il nuovo proiettore laser di Hisense promette esperienze cinematografiche in qualsiasi contesto: qualità d’immagine, semplicità d’uso, versatilità e prezzo competitivo il suo poker d'assi
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
La flessibilità di configurazione è il punto di forza di questo 2-in-1, che ripropone in un form factor alternativo tutta la tipica qualità dei prodotti Lenovo della famiglia ThinkPad. Qualità costruttiva ai vertici, ottima dotazione hardware ma costo che si presenta molto elevato.
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-12-2009, 19:00   #1
giggikr
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:
/* programma che converte una stringa minuscola in una stringa maiuscola */
#include <stdio.h>

int main()
{
    
char str[100];
    
int i,cont 0;

scanf("%s"str);
       

//creo la f strlen che conta quanto è lunga la stringa

for ( str[i] != '\0' i++)
        
cont++;



0;

if( 
    for( 
cont i++)
    
    
str[i] = str[i]-32;

printf("%s\n"str);


return 
0;

giggikr è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 19:07   #2
wingman87
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.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 20:08   #3
cionci
Senior Member
 
L'Avatar di cionci
 
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.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 20:12   #4
M4rk191
Senior Member
 
L'Avatar di M4rk191
 
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
M4rk191 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2009, 08:28   #5
cionci
Senior Member
 
L'Avatar di cionci
 
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.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2009, 12:05   #6
fero86
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
}
il motivo per cui ne ho messi 80 é che tipicamente i terminali e le consoles hanno righe da 80 caratteri.
fero86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Cooler Master MasterFrame 600: modularit...
Questi case sembrano GPU RTX 50 e costan...
Elgato Facecam 4K: ecco la nuova webcam ...
Stampa 3D senza sprechi e senza rifiuti?...
OPPO Find X9 Pro potrebbe battere ogni r...
Le nuove Sony WH-1000XM6 ora disponibili...
ChatGPT Agent come un essere umano: l'AI...
Samsung rivaluta la fabbrica per il pack...
'La potenza di 16 core, nel palmo della ...
Windows 10 compie 10 anni, ma il cambiam...
Un altro Pixel 6a ha preso fuoco: la pro...
NVIDIA, ritorno in Cina in grande stile?...
Tutti contro Windows Recall: un altro se...
PlayStation FlexStrike: il sogno di un f...
WhatsApp sorprende tutti: ecco la nuova ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v