Я не могу считать слова в строке - PullRequest
0 голосов
/ 24 февраля 2020
int FindWords(char *str)
{
    int i, word = 1;

    for (i = 0 ; *(str + i)! = '\0'; i++) {
        if (isspace(*str + i)) {
            if (isspace(*str + i + 1)) {
                continue;
            }
            word++;
        }
    }
    return word;
}

Я не могу считать слова в строке. Я погуглил функцию isspace().

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020
int FindWords(char *str)
{
   int i,word=1;

    for(i=0;str[i];i++)
    {
      if(isspace(str[i]))
       {
    if(isspace(str[i+1]))
    {
    continue;
    }
    word++;
       }
    }
    return word;
}

Я закончил с этим. Но все еще не совсем надежно! logi c такой же, как и в вопросе, но взял несколько советов из комментариев!

0 голосов
/ 24 февраля 2020
int FindWords(char *str) {
     int i = 0, length = 0, word = 0;

     length = strlen(str);

     for (i = 1 ; i < length; i++) {
         if (str[i] == ' ' && str[i-1] != ' ') {
             word++;
         }
     }

     if ( strlen(str)> 0) {
        if (str[length-1] != ' '){
            word++;
        }
     }

     return word;
 }

Я бы так и сделал. Зацикливание всех символов в строке, и каждый раз, когда мы падаем на пробел, и то, что предыдущий символ не является пробелом, это означает, что мы только что закончили новое слово, поэтому мы увеличиваем слово. Мы также увеличиваем слово в самом конце, если последний символ не является пробелом.

strlen (str) Дает мне количество символов в строке str.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...