我正在尝试编写一个程序,该程序一直接收用户的输入,直到用户输入“退出”。每次用户输入时,我希望程序打印出用户输入的字数。因此,用户的以下输入:
hello how are you
将产生以下输出:
You entered 4 words.
但是,我在编写程序时遇到了麻烦,它只计算一行的单词数;在进入下一行之前,它不会清除数字。因此,如果它从用户那里输入了三次,它将把这三行上的单词总数相加。例如,以下输入:
how are you
i am good thank you
quit
将产生以下输出:
You entered 9 words.
当我希望它输出用户输入的每一行之后的字数时(退出除外),即
>>how are you
<<You entered 3 words.
>>i am good thank you
<<You entered 5 words.
>>quit
这是我的代码的相关位:
char *input;
int inum;
int inputLoop()
{
char quit[] = "quit";
inum = 0; //counts number of words
while (strcmp(input, quit) != 0)
{
cin >> input;
inum++;
}
cout <<"You entered " <<inum <<" words." <<endl;
我宁愿不使用向量之类的东西;我使用的任何东西最终都需要转换为 *char,因为我的全局变量是 *char。(而且我的全局变量是 *char,因为根据某些条件,*input 可能会从 main 设置为 *argv[]。)
我已经尝试了各种各样的事情,但我似乎无法克服这样一个事实,即 strcmp(input, quit) 一次比较输入的一个单词以退出,而不是比较整个输入行以退出。帮助。