Как проверить строку с допустимыми символами в стандартном C? - PullRequest
2 голосов
/ 21 августа 2009

Я хочу проверить строку на соответствие допустимым символам, используя стандарт C. Есть ли стандартная функциональность? Насколько я вижу, регулярное выражение lib в GNU Lib C недоступно в VC ++. Что вы предлагаете для реализации такой простой задачи. Я не хочу включать зависимость библиотеки PCRE. Я бы предпочел более простую реализацию.

Ответы [ 2 ]

4 голосов
/ 21 августа 2009

Вы можете проверить, содержит ли строка какой-либо символ из данного набора символов, с помощью strcspn .

Редактировать: в соответствии с рекомендациями Inshalla и maykeye, strspn, wcsspn может быть более подходящим для вашей задачи.

Вы бы использовали strspn примерно так:

#define LEGAL_CHARS "ABCDEFGHIJLKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

if (strspn(str, LEGAL_CHARS) < strlen(str))
{
    /* String is not legal */
0 голосов
/ 21 августа 2009

Очевидный ответ: написать функцию. Или в этом случае две функции:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...