2 Stimmen

Wie validiert man eine Zeichenkette auf zulässige Zeichen in Standard-C?

Ich möchte eine Zeichenkette mit Hilfe von Standard-C auf zulässige Zeichen überprüfen. Gibt es eine Standardfunktionalität? Soweit ich sehen kann, ist die GNU Lib C's regex lib nicht in VC++ verfügbar. Was schlagen Sie für die Implementierung einer solch einfachen Aufgabe vor. Ich möchte keine PCRE-Bibliotheksabhängigkeit einbeziehen. Ich würde eine einfachere Implementierung bevorzugen.

4voto

Nick Dandoulakis Punkte 41402

Sie können prüfen, ob eine Zeichenkette ein beliebiges Zeichen aus einer gegebenen Menge von Zeichen enthält mit strcspn .

Editar: wie von Inshalla und maykeye vorgeschlagen, strspn, wcsspn könnte für Ihre Aufgabe besser geeignet sein.

Sie würden verwenden strspn のように。

#define LEGAL_CHARS "ABCDEFGHIJLKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

if (strspn(str, LEGAL_CHARS) < strlen(str))
{
    /* String is not legal */

0voto

Die offensichtliche Antwort: Schreiben Sie eine Funktion. Oder in diesem Fall zwei Funktionen:

int IsLegal( char c ) {
    // test c somehow and return true if legal
}

int LegalString( const char * s ) {
    while( * s ) {
       if ( ! IsLegal( * s ) ) {  
          return 0;
       }
       s++;
    }
    return 1;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X