35 lines
851 B
C++
35 lines
851 B
C++
|
// ex4.cpp: Default arguments and Pass-by-reference
|
|||
|
// from Chapter 6 of User's Guide
|
|||
|
#include <iostream.h>
|
|||
|
#include <ctype.h>
|
|||
|
|
|||
|
int get_word(char *, int &, int start = 0);
|
|||
|
|
|||
|
main()
|
|||
|
{
|
|||
|
int word_len;
|
|||
|
char *s = " These words will be printed one-per-line ";
|
|||
|
|
|||
|
int word_idx = get_word(s,word_len); // line 13
|
|||
|
while (word_len > 0)
|
|||
|
{
|
|||
|
cout.write(s+word_idx, word_len);
|
|||
|
cout << "\n";
|
|||
|
//cout << form("%.*s\n",word_len,s+word_idx);
|
|||
|
word_idx = get_word(s,word_len,word_idx+word_len);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int get_word(char *s, int& size, int start)
|
|||
|
{
|
|||
|
// Skip initial whitespace
|
|||
|
for (int i = start; isspace(s[i]); ++i);
|
|||
|
int start_of_word = i;
|
|||
|
|
|||
|
// Traverse word
|
|||
|
while (s[i] != '\0' && !isspace(s[i]))
|
|||
|
++i;
|
|||
|
size = i - start_of_word;
|
|||
|
return start_of_word;
|
|||
|
}
|
|||
|
|