gpt4 book ai didi

c++ - 在接受用户输入后,我需要返回 c sting 中的单词数

转载 作者:行者123 更新时间:2023-11-28 01:53:15 26 4
gpt4 key购买 nike

我需要制作一个程序,从用户那里获取输入,然后将输入的字数返回到字符串中。我将用户输入存储在数组 char words[256]; 中 我有一个名为 countWords 的函数。它循环遍历数组,如果遇到空格,他的计数器就会增加。 if(words[i] == '\0') 如果到达空字符,则停止计数器。然后它返回 nSpaces + 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] == '\0')
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

最佳答案

当您到达空字符时,您并没有停止循环。您只测试 if(isspace(words[i])) block 内的空字符,但如果该字符是空格,则它也不能是空终止符。因此,您正在阅读输入的末尾,并计算字符串未初始化部分中的空格。

int countWords(char words[]){
int nSpaces = 0;

for (int i=0; i<256 && words[i] != '\0'; i++){
if(isspace(words[i])){
nSpaces++;
}
}
// The number of words = the number of spaces + 1
return nSpaces + 1;
}

关于c++ - 在接受用户输入后,我需要返回 c sting 中的单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42100875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com