Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-03-2007, 23:08   #1
ugo86
Junior Member
 
L'Avatar di ugo86
 
Iscritto dal: Nov 2006
Messaggi: 15
[C] Isdigit & Isalpha

Ciao ragazzi, innanzitutto grazie mille per il vostro aiuto continuo!

In poche parole ho queste due semplicissime funzioni ma non riesco ad utilizzarle!

Il mio programma riceve un intero e lo controlla.

Deve essere compreso tra 1 e 3... quindi voglio distinguere se è un numero, se è una lettera... o se non è nè l'uno e nè l'altro (ad esempio un punto).

Il mio programma è il seguente:

Codice:
#include <stdio.h>
#include <ctype.h>
main(){
   int a, control=0;
   while(control==0){
       printf("Inserisci il numero   ");
       scanf("%d", &a);  //preleva l'intero
       
       if (isdigit(a)!=0){  //se è un numero
        if( a>=1 && a<=3 ){
         printf("scelta corretta\n\n");
         control = 1;
         break;
         }
        else
         printf("Numero non corretto\n\n");
        }               //fine if isdigit

       if (isalpha(a)!=0)
        printf("e' una lettera\n\n");
       
       if(isalnum(a)==0)
        printf("Non e' ne' una lettera e nemmeno un numero!!!\n\n");
   }            //fine while          
   printf("Fine del programma\n\n");
   system("pause");
   }            //fine main
C'è qualcosa che non va... non funziona! Ma non sarà che ste funzioni isdigit, isalpha e isalnum ACCETTANO SOLO IL CODICE ASCII?? Come faccio a usarle se ho una variabile di tipo intera???
ugo86 è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2007, 00:01   #2
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
int isdigit( int ch );

passando un char

char a;
scanf("%c", &a);
isdigit(a)

se a è un carattere da '0' a '9' isdigit ritorna un valore diverso da 0
idem come sopra per isalpha
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2007, 08:37   #3
ugo86
Junior Member
 
L'Avatar di ugo86
 
Iscritto dal: Nov 2006
Messaggi: 15
thank's

Grazie vizz! Il problema della funzione è risolto... però è rimasto il problema del ciclo! Me ne fa più di uno... c'è ancora qualcosa che non va!

Ti mando il programma:

Codice:
main(){
   char a, control=0;
   while(control==0){
       printf("Inserisci il numero   ");
       scanf("%c", &a);  //preleva l'intero
       
       if (isdigit(a)!=0){  //se è un numero
        if( a>=1 && a<=3 ){
         printf("scelta corretta\n\n");
         control = 1;
         break;
         }
        else
         printf("Numero non corretto\n\n");
        }               //fine if isdigit

       if (isalpha(a)!=0)
        printf("e' una lettera\n\n");
       
       if(isalnum(a)==0)
        printf("Non e' ne' una lettera e nemmeno un numero!!!\n\n");
   }            //fine while          
   printf("Fine del programma\n\n");
   system("pause");
   }            //fine main
ugo86 è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2007, 08:58   #4
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
if( a>=1 && a<=3 ) non è possibile farlo confrontando un char.
qui dovresti convertire con atoi il char in un intero e poi confrontarlo.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2007, 10:44   #5
ugo86
Junior Member
 
L'Avatar di ugo86
 
Iscritto dal: Nov 2006
Messaggi: 15
insomma non si può fare

A regà.... in finale non esiste modo per capire che tipo di lettera si è inserita in un intero???
ugo86 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2007, 11:04   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da ugo86 Guarda i messaggi
A regà.... in finale non esiste modo per capire che tipo di lettera si è inserita in un intero???
Già questa frase non ha molto senso....

Codice:
char c;

scanf ("%c", &c);

if (isdigit (c))
{
    if (c >= '1' && c <= '3')
        printf ("Numero corretto\n");
    else
        printf ("Numero non corretto\n");
}
else if (isalpha (c))
    printf ("Lettera\n");
else
    printf ("Altro carattere\n");
Cioè ... quale è il problema??
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2007, 11:30   #7
ugo86
Junior Member
 
L'Avatar di ugo86
 
Iscritto dal: Nov 2006
Messaggi: 15
ecco cosa mi era sfuggito!

Grande and! Fortuna che ci sei te, SEI UN MAGO!!!
Mi era sfuggito che i numeri bisognava metterli tra le virgolette!

hehehehehe, grazie mille caro!
ugo86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
UWANT V800: addio al rullo rotante, l’as...
Keenetic Stellar 6 porta il WiFi 6 negli...
Instagram spinge sul formato orizzontale...
DMA, l'UE verso la designazione di AWS e...
Dalla fisica quantistica alla fibra: il ...
TikTok, il 59% dei video è AI Slop, 'sch...
Batterie stampate in 3D: la forma libera...
Honor X80 Pro Max ufficiale: vi bastano ...
HONOR Watch 6: batteria infinita, modali...
Windows 11, addio alle ricerche sul web:...
La vera sfida dell’IA non è adott...
Signal contro l'AI agentica: dare ai cha...
Amazon: l'human-in-the-loop non basta a ...
HONOR 600 Lite: design in metallo e batt...
Ultima: il creatore potrebbe riacquisire...
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: 17:34.


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