Bestimmen Sie, ob char eine Zahl oder ein Buchstabe ist

Lesezeit: 2 Minuten

Benutzeravatar von Mona
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:

  • Numerisch – if (theChar >= '0' && theChar <= '9')
  • Alphabetisch –
    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.

Benutzeravatar von plasmacel
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

Benutzeravatar der Community
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.

1413780cookie-checkBestimmen Sie, ob char eine Zahl oder ein Buchstabe ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy