2017-02-09 17 views
1

Я пытался заставить эту функцию взять массив строк и подсчитать количество слов, но я продолжаю получать 0 в качестве своего ответа, то есть он ничего не подсчитал. Мне было интересно, может ли кто-нибудь помочь мне? Я считаю, что логика правильная (я могу ошибаться), но я в основном не уверен в том, как я буду повторятьc: моя функция не учитывает ни одного слова

спасибо !!

Вот мой код:

int fWords (char **array, int index) { 

    int number = 0; 
    int i = 0; 
    int in = 0; 
    int j = 0; 
    int length = 0; 

    while (i < index) { 
     length = strlen (array[i]); 
     for (j = 0; array[i][j] < length; j++) { 
      if (isspace(array[i][j]) != 0) { 
       in = 0; 
      } 
      else if (in == 0) { 
      in = 1; 
      number++; 
      } 
     } 

     i++; 
    } 

    return number; 
} 

ответ

0

Это условие неверно:

for (j = 0; array[i][j] < length ; j++) 
//   ^^^^^^^^^^^^^^^^^^^^ 

это должно быть просто

for (j = 0; j < length ; j++) 
//   ^^^^^^^^^^ 

Это позволит устранить проблему с нуля.

+1

Большое вам спасибо! который решил мою проблему хорошо, это на самом деле подсчет спасибо богу ха-ха, но по какой-то причине он отключен довольно укусом, я предполагаю, что я не передаю все строки правильно или что-то – kirkosaur

1

Необходимо выполнить сброс после каждого цикла внутреннего цикла. Что-то вроде этого

while (i < index) { 
    length = strlen (array[i]); 
    in = 0; 
    //^^^^^^^ 
    for (j = 0; j < length; j++) { 
     if (isspace(array[i][j]) != 0) { 
      in = 0; 
     } 
     else if (in == 0) { 
     in = 1; 
     number++; 
     } 
    } 

    i++; 
} 
+0

Большое вам спасибо! что на самом деле исправлены все мои проблемы – kirkosaur

+0

@kirkosaur: не забудьте принять ответ, если он отвечает на ваш вопрос! –

 Смежные вопросы

  • Нет связанных вопросов^_^