2016-06-02 4 views
-3

У меня есть указатель указателя * и попытка подсчитать длину каждого слова. но я не получаю никакого результата в отладчике (просто пустое пространство). что бы я ни изменил, я не получаю никакого результата. код:Подсчет длины каждого слова в c char

void wordsLen(char* text, int* words, int n) 
{ 
    int i, count = 0, s = 0; 
    //words[countWords(text)]; // not important 

    for (i=0; i < n; i++) 
    { 
     if (text[i] != ' ') 
     { 
      count++; 

     } 
     else 
     { 
      printf("%d",count); 
     } 
     printf("%d",count);//if I add this it types the count from 1 to the end 
    } 
} 

Я пытаюсь вставить этот массив:

#include <stdio.h> 
#include <string.h> 
#include <conio.h> 

#define N 100 
void main() 
{ 
    char t[] = "hello my name is."; 
    int cum[N]; 
    wordsLen(t, cum, strlen(t)); 
    getch(); 
} 

Поскольку я не получаю никакого результата, я хотел бы знать, почему, и есть ли какие-либо проблемы с кодом для подсчета длины слов? как хорошо для подсчета длины слова или мне нужно что-то изменить.

+0

Значит ли 'wordsLen' получить значение? – Marievi

+0

Кроме того, что такое 'words [countWords (текст)];'? – Marievi

+2

C или C++? существуют разные языки – Garf365

ответ

0

Вот небольшая модификация вашей функции.

void wordsLen(char* text, int* words, int n) 
{ 
    int i, count = 0, s = 0; 

    for (i=0; i < n; i++) 
    { 
     if (text[i] != ' ') 
     { 
      count++; 
     } 
     else 
     { 
      printf("%d",count); 
      count = 0; 
     } 
    } 
    printf("%d", count); 

}

+0

это неверно, потому что последнее слово не учитывается, я думаю. –

+1

@kevin Wallis Я добавил отпечаток после завершения цикла, который будет печатать подсчет последнего слова. –

0

Здесь некоторый код для подсчета слов и там длина:

void addWord(int* numberOfWords, int* count) { 
    *numberOfWords = *numberOfWords + 1; 
    *count = 0; 
} 

void print(int numberOfWords, int count) { 
    printf("number of words %d \n", numberOfWords); 
    printf("word length %d \n", count); 
} 

void wordsLen(char* text, int* words, int n) 
{ 
    int i = 0; 
    int count = 0; 
    int numberOfWords = 0; 
    //words[countWords(text)]; // dynamicly set the length 

    for (i = 0; i < n; i++) 
    { 
     char ch = text[i]; 
     if (ch != ' ') 
     { 
      count++; 
     } 

     if (count > 0 && (ch == ' ' || (i == n - 1))) 
     { 
      print(numberOfWords + 1, count); 
      addWord(&numberOfWords, &count); 
     } 
    } 
} 
0

Попробуйте это:

void wordsLen(char* text, int* words, int n) 
{ 
    int i, count = 0, s = 0; 
    //words[countWords(text)]; // not important 

    for (i=0; i <= n; i++) 
    { 
     if (text[i] != ' ' && text[i] != '\0') 
     { 
      count++; 
     } 
     else 
     { 
      printf("%d ",count); 
      count = 0;    
     } 
     //printf("%d",count); 
    } 
} 
+0

Он не распечатает отсчет последнего слова. –

+0

Обратите внимание, что <= в условии if – Harsha

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