Heim > Backend-Entwicklung > C++ > Hauptteil

Sollte ich char oder int für die Eingabevalidierung in C verwenden?

Susan Sarandon
Freigeben: 2024-10-28 22:30:30
Original
444 Leute haben es durchsucht

 Should I use char or int for input validation in C?

isdigit(c) – Verwendung von char vs. int zur Eingabevalidierung

Bei der Untersuchung Ihres Codes, der darauf abzielt, Benutzereingaben als zu validieren Digit stellt sich die Frage: Was soll der Typ der Eingabevariable sein – char oder int?

Um dieses Dilemma zu verstehen, muss man sich mit den Feinheiten der isdigit-Funktion in C befassen. Im Gegensatz zu seinem Namen erwartet isdigit ein ganzzahliges Argument. Dies wirft Bedenken hinsichtlich der Kompatibilität mit der char-Eingabe auf.

Die Erklärung liegt in der Geschichte von C, insbesondere getchar(), das Zeichen als Ganzzahlen abruft, um sowohl den Zeichencode als auch Fehlercodes (negative Werte, die EOF darstellen) aufzunehmen. Dieses Design führt zu Kompatibilitätsproblemen mit char, das je nach Compiler entweder signiert oder nicht signiert sein kann.

Signiertes char stellt eine Herausforderung dar, da sich negative Werte mit EOF überschneiden, was möglicherweise zu Fehlern führt. Daher erfordern isdigit und verwandte Funktionen eine Eingabe, die als vorzeichenloses Zeichen behandelt wird, um Positivität sicherzustellen.

Um die Kompatibilität sicherzustellen, ändern Sie Ihren Code wie folgt:

<code class="c">if(isdigit((unsigned char)c))</code>
Nach dem Login kopieren

Außerdem ist es wichtig, dies zu überprüfen Der Eingabestream ist vor der Verwendung von c gültig, da ein geschlossener Stream dazu führen könnte, dass er nicht initialisiert wird.

Das obige ist der detaillierte Inhalt vonSollte ich char oder int für die Eingabevalidierung in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage