Тестирование встроенных пространств в c - PullRequest
0 голосов
/ 01 декабря 2010

Я хочу создать функцию в C-программировании, которая будет проверять наличие встроенных пробелов в C.

, если он найдет встроенные пробелы в строке, он вернет 1, иначе 0

примеры:

'sjdfnsdj' >>>>> return 0
'sdsd sdsdf' >>>>> return 1
'    ssadsa' >>> return 0
'dfjksdnf sdfsdfdf' >>>> return 1
' sadf asdad' >>>> return 1

Встроенные пробелы означают пробелы между двумя строками или после строки, но НЕ перед строкой

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Вы можете использовать strchr для сканирования строки на наличие пробела после пропуска начальных пробелов.

Предполагая, что char buf [] содержит строку для проверки

int i=0;
while ( buf[i] == ' ' && buf[i] != '\0' )
  i++;

return strchr( &buf[i], ' ' ) != NULL;

РЕДАКТИРОВАТЬ: сообщение было помечено с домашним заданием.

Вместо использования strchr вы также можете сделать еще один цикл, как тот, чтобы пропустить ведущие пробелы.Чтобы выяснить, есть ли еще пробелы после первого непробельного символа.

1 голос
/ 01 декабря 2010

Это может помочь, в основном вам нужен простой конечный автомат.

int CheckEmbeddedStr(char *str)
{
    //0 - No Start str
    //1 - Start str seen
    //2 - embedded space seen
    //3 - trailing str seen
    int state=0; 
    int count=0;
    while(str && str[count])
    {
        if(state == 0 && isalpha(str[count]))
            state++;
        if(state == 1 && str[count] = ' ')
            state++;
        if(state == 2 && isalpha(str[count]))
        {
            state++;
            break;
        }
    }
    if(state==3)
        return 1;
    else
        return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...