count the number of words in c-string

using a c-string how would you count words by the space?
Please give an attempt at a code before asking for help.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <cstring>
using namespace std;

int countWords(char* one, int SIZE);

int main()
{
    //first array and size
    const int SIZE = 100;
    char one[SIZE];
    
    
    countWords(one, SIZE);
    
    
    system("pause");
    return 0;    
}



//first function
int countWords(char* one, int SIZE) //char array/pointer, length of array
{
    
    int count = 0; //integer for the word count
    
    while(*one != '\0')
    {
        if(*one == ' ')
        count++;
    }

    return count; //return the integer
  
}

one always points to the first letter in the string.
can you explain that a bit more please? thanks!
In your loop, you should increase one or it will always point to the same character, the first one.
so I would change count++ to one++?
If you did that, how would you know how many words there were? You're awfully close to the solution... :)
You should try to actually understand the code you're dealing with.
I would suggest rereading the chapter about pointers.
I have read the chapter multiple times. words are formed by adding a space, I thought I was counting the number of spaces to find the number of words.
Yes, but one points to the string's first character and you don't ever change that.
So it counts the number of spaces in the first character. Forever.
Last edited on
You need to move the pointer along the string to look for the spaces, and each time you find a space, you need to add one to your total.

"Your total" and "the pointer that you move along the string" are two completely different things.
AHH so I need to increment the "one" in order to move it a long the string!
Having an awful time getting the total of words to output in the last function. anyone have any ideas?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <iostream>
#include <cstring>
using namespace std;

int countWords(char* one, int SIZE);
int addDigits();
void outputArrays(char* one, int SIZE);

int main()
{
    //first array and size
    const int SIZE = 100;
    char one[SIZE];
    
    char two[SIZE];
    
    //prompt to enter a sentence for the first array
    cout << "Enter a sentence of at least two words:" << endl;
    //get input for the first array  
    cin >> one;
    cout << endl << endl;
    
    //prompt to enter digits
   
    
    
    //use function strlen() to find length or number of sig chars in arrays
    
    
    //call the first function
    countWords(one, SIZE);
    
    int count;
    
    //call the second function
    addDigits();
    
    
    //call the output function
    outputArrays(one, SIZE);
    
    
    system("pause");
    return 0;    
}



//first function
int countWords(char* one, int SIZE) //char array/pointer, length of array
{
    int count = 0; //integer for the word-count, used as total
    
    while(*one != '\0')
    {
        if(*one == ' ')
        one++;   //increment the pointer
        count++; //increment the total
    }

    return count; //return the integer - number of words
}


//second function
int addDigits()
{
            
    
}



void outputArrays(char* one, int SIZE)
{
    cout << "The total number of words is: " << one; 
    
}
#include <iostream>
#include <cstring>
using namespace std;

int countWords(char* one, int SIZE);
int addDigits();
void outputArrays(char* one, int SIZE, int count);

int main()
{
    //first array and size
    const int SIZE = 100;
    char one[SIZE];
    
    char two[SIZE];
    
    //prompt to enter a sentence for the first array
    cout << "Enter a sentence of at least two words:" << endl;
    //get input for the first array  
    cin >> one;
    cout << endl << endl;
    
    //prompt to enter digits
   
    
    
    //use function strlen() to find length or number of sig chars in arrays
    
    
    //call the first function
    countWords(one, SIZE);
    
    int count;
    
    //call the second function
    addDigits();
    
    
    //call the output function
    outputArrays(one, SIZE, count);
    
    
    system("pause");
    return 0;    
}



//first function
int countWords(char* one, int SIZE) //char array/pointer, length of array
{
    int count = 0; //integer for the word-count, used as total
    
    while(*one != '\0')
    {
        if(*one == ' ')
        one++;   //increment the pointer
        count++; //increment the total
    }

    return count; //return the integer - number of words
}


//second function
int addDigits()
{
            
    
}



void outputArrays(char* one, int SIZE)
{
    cout << "The total number of words is: " << one; 
    
}

Last edited on
You might want to look at string tokenize:
http://www.cplusplus.com/reference/clibrary/cstring/strtok/
Topic archived. No new replies allowed.