Подсчет слов с использованием c - PullRequest
0 голосов
/ 29 мая 2020

Я хотел бы знать, почему мой код не компилируется должным образом. Что я пытаюсь сделать sh, так это счет слов. У меня уже есть место, где запрашиваются пробелы, но это не работает, если это несколько предложений в одной строке. Потому что он будет считать пробел после знака препинания как слово, когда знак препинания делает то же самое.

 while (s[n] != '\0')
    {
        if (isalpha(s[n])) //counts letters
        {
            count++;
        }
        if (isspace(s[n])) //count words
        {
            word++;
        }
        if (s[n] == '.' || s[n] == '?' || s[n] == '!')
        {
            else if (s[n + 1] isspace) //This is the problem
            {
                word--;
            }
            sent++;
            word++;
        }   
        n++;
    }

Я почти уверен, что это будет правильно, но он не компилируется должным образом, так что я вроде просто застрял здесь. Насколько я понимаю, высказывание (s [n + 1]) означает, что если буква после той, которую он в настоящее время проверяет, является пробелом, посмотрите, является ли это пробелом, если истина, то слово - иначе слово ++. Если это не так, скажите, пожалуйста, почему?

1 Ответ

0 голосов
/ 29 мая 2020

Этот код может скомпилировать без ошибок:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

int main()

{

 char s[10] = "";
 int n = 0;
 int count =  0;
 int word = 0;
 int sent = 0;

 while (s[n] != '\0')
    {
        if (isalpha(s[n])) //counts letters
        {
            count++;
        }
        if (isspace(s[n])) //count words
        {
            word++;
        }
        if (s[n] == '.' || s[n] == '?' || s[n] == '!')
        {
          // What to do here ?
        } 
        else if (isspace(s[n + 1])) 
        {
                word--;
        }
           sent++;
           word++;
     }   
        n++;
}
...