在接受用户输入后,我需要 return c 字符串中的单词数
I need to return number of words in c sting after taking user input
我需要制作一个程序来接收用户的输入,然后 return 输入字符串的字数。我将用户输入存储在数组 char words[256];
中 我有一个名为 countWords
的函数。它循环遍历数组,如果遇到 space 则计数器增加。 if(words[i] == '[=15=]')
如果到达空字符,则停止计数器。然后用returnnSpaces + 1
来占第一个字。
但我的输出似乎改为生成字符串中的字符数。如何解决这个问题。
#include <iostream>
#include <cstdlib>
using namespace std;
//Function Prototype
int countWords(char words[]);
int main(){
char words[256];
cout << "Enter a sentence: ";
cin.getline(words, 256);
int word_num = countWords(words);
cout << "The number of words in a string is: " << word_num << endl;
system("PAUSE");
return 0;
}
int countWords(char words[]){
int nSpaces = 0;
//unsigned int i = 0;
/*while(isspace(words[i])){
i++;
}*/
for (int i=0; i<256; i++){
if(isspace(words[i])){
nSpaces++;
// Skip over duplicate spaces & if a NULL character is found, we're at the end of the string
//while(isspace(words[i++]))
if(words[i] == '[=11=]')
nSpaces--;
}
}
// The number of words = the number of spaces + 1
return nSpaces + 1;
}
输出是:
Enter a sentence: Yury Stanev
The number of words in a string is: 7
isspace
计算新行 (\n)、制表符 (\t)、\v、\f 和 \r。
可能您只想要 white-spaces?仅检查“ ”和“\t”。
当您到达空字符时,您并没有停止循环。您只测试 if(isspace(words[i]))
块内的空字符,但如果该字符是 space 则它也不能是空终止符。结果,您正在阅读输入的末尾,并计算字符串未初始化部分中的 spaces。
int countWords(char words[]){
int nSpaces = 0;
for (int i=0; i<256 && words[i] != '[=10=]'; i++){
if(isspace(words[i])){
nSpaces++;
}
}
// The number of words = the number of spaces + 1
return nSpaces + 1;
}
我需要制作一个程序来接收用户的输入,然后 return 输入字符串的字数。我将用户输入存储在数组 char words[256];
中 我有一个名为 countWords
的函数。它循环遍历数组,如果遇到 space 则计数器增加。 if(words[i] == '[=15=]')
如果到达空字符,则停止计数器。然后用returnnSpaces + 1
来占第一个字。
但我的输出似乎改为生成字符串中的字符数。如何解决这个问题。
#include <iostream>
#include <cstdlib>
using namespace std;
//Function Prototype
int countWords(char words[]);
int main(){
char words[256];
cout << "Enter a sentence: ";
cin.getline(words, 256);
int word_num = countWords(words);
cout << "The number of words in a string is: " << word_num << endl;
system("PAUSE");
return 0;
}
int countWords(char words[]){
int nSpaces = 0;
//unsigned int i = 0;
/*while(isspace(words[i])){
i++;
}*/
for (int i=0; i<256; i++){
if(isspace(words[i])){
nSpaces++;
// Skip over duplicate spaces & if a NULL character is found, we're at the end of the string
//while(isspace(words[i++]))
if(words[i] == '[=11=]')
nSpaces--;
}
}
// The number of words = the number of spaces + 1
return nSpaces + 1;
}
输出是:
Enter a sentence: Yury Stanev
The number of words in a string is: 7
isspace
计算新行 (\n)、制表符 (\t)、\v、\f 和 \r。
可能您只想要 white-spaces?仅检查“ ”和“\t”。
当您到达空字符时,您并没有停止循环。您只测试 if(isspace(words[i]))
块内的空字符,但如果该字符是 space 则它也不能是空终止符。结果,您正在阅读输入的末尾,并计算字符串未初始化部分中的 spaces。
int countWords(char words[]){
int nSpaces = 0;
for (int i=0; i<256 && words[i] != '[=10=]'; i++){
if(isspace(words[i])){
nSpaces++;
}
}
// The number of words = the number of spaces + 1
return nSpaces + 1;
}