Wie stelle ich fest, ob a char
in C wie z a
oder 9
ist eine Zahl oder ein Buchstabe?
Ist es besser zu verwenden:
int a = Asc(theChar);
oder dieses?
int a = (int)theChar
Mona
Wie stelle ich fest, ob a char
in C wie z a
oder 9
ist eine Zahl oder ein Buchstabe?
Ist es besser zu verwenden:
int a = Asc(theChar);
oder dieses?
int a = (int)theChar
Sie möchten die verwenden isalpha()
und isdigit()
Standardfunktionen in <ctype.h>
.
char c="a"; // or whatever
if (isalpha(c)) {
puts("it's a letter");
} else if (isdigit(c)) {
puts("it's a digit");
} else {
puts("something else?");
}
chars sind nur Ganzzahlen, sodass Sie Ihr Zeichen direkt mit Literalen vergleichen können:
if( c >= '0' && c <= '9' ){
Dies gilt für alle Charaktere. Siehe deine ASCII-Tabelle.
ctype.h bietet auch Funktionen, um dies für Sie zu tun.
Das ist richtig, aber nicht, weil ASCII garantiert ist, sondern wegen der Kontinuität der Ziffern: stackoverflow.com/a/35936519/895245
– Ciro Santilli OurBigBook.com
11. März 2016 um 9:33 Uhr
Das ist die Antwort, nach der ich gesucht habe. Und ich denke, die meisten Leute brauchen diese Antwort, wenn sie irgendeine Art von Übung an der Universität lösen
– Henrique Amaral
29. August 2020 um 20:23 Uhr
<ctype.h>
umfasst eine Reihe von Funktionen zur Bestimmung, ob a char
steht für einen Buchstaben oder eine Zahl, wie z isalpha
, isdigit
und isalnum
.
Der Grund warum int a = (int)theChar
wird nicht tun, was du willst, weil a
enthält einfach den ganzzahligen Wert, der ein bestimmtes Zeichen darstellt. Zum Beispiel die ASCII-Nummer für '9'
ist 57, und für 'a'
es ist 97.
Auch für ASCII:
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
Schauen Sie sich eine an ASCII-Tabelle selbst zu sehen.
Die Prüfung auf ‘0’ <= x <= '9' ist für alle standardkonformen Implementierungen korrekt (ASCII oder nicht ist egal). C erfordert, dass Dezimalziffern zusammenhängend dargestellt werden. Was Briefe betrifft, sind alle Wetten abgeschlossen.
– Wiz
22. Januar 2015 um 0:50 Uhr
Beides macht nichts Sinnvolles. Verwenden isalpha()
oder isdigit()
aus der Standardbibliothek. Sie sind dabei <ctype.h>
.
Wenn (theChar >= '0' && theChar <='9')
es ist eine Ziffer. Du hast die Idee.
plasmacel
Sie können normalerweise mit einfachen Bedingungen nach ASCII-Buchstaben oder -Zahlen suchen
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
/*This is an alphabet*/
}
Für Ziffern können Sie verwenden
if (ch >= '0' && ch <= '9')
{
/*It is a digit*/
}
Aber da Zeichen in C intern behandelt werden als ASCII-Werte Sie können auch ASCII-Werte verwenden, um dasselbe zu überprüfen.
So prüfen Sie, ob ein Zeichen eine Zahl oder ein Buchstabe ist
Gemeinschaft
C99-Standard an c >= '0' && c <= '9'
c >= '0' && c <= '9'
(in einer anderen Antwort erwähnt) funktioniert, weil C99 N1256 Standardentwurf 5.2.1 “Zeichensätze” sagt:
Sowohl im Quell- als auch im Ausführungsbasiszeichensatz muss der Wert jedes Zeichens nach 0 in der obigen Liste von Dezimalziffern um eins größer sein als der Wert des vorherigen.
ASCII wird jedoch nicht garantiert.