无法弄清楚为什么不计算空格数

时间:2014-10-05 05:07:08

标签: c++ arrays

我一直在教学习c ++,我一直试图制作一个带有一串字符的程序,并使用指针删除空格。一切正常,但我希望它输出删除的空格数量。在我疲惫的眼睛上,代码看起来都是正确的我有多个空格定义为空格。非常自我解释我想做什么。任何帮助将不胜感激! :)

#include <iostream> 

using namespace std;

int stripWhite(char *str);


int main()
{
char str[100];
cin.getline(str, 99);    // save room for the null character.


stripWhite(str);
cout << str << endl;

cout << "I removed " << stripWhite(str) << " from this sentence.";



return 0;
}


int stripWhite(char *str)
{
char *p;    
int spaces = 0;

for (p = str; *str != '\0'; ++str) 
{
    if (*str != 0x20)
    {
         *p++ = *str;

    }
    else
    {
        spaces++;

    }

}
*p = '\0';  

return spaces;
}

3 个答案:

答案 0 :(得分:3)

因为你在字符串上调用stripWhite两次(第一次丢弃删除的号码)所以显然第二次没有任何东西可以删除。

您需要调用一次并保存返回值,例如:

int count = stripWhite(str);
cout << str << endl;

cout << "I removed " << count << " from this sentence.";

答案 1 :(得分:1)

当您第一次调用stripWhite(str)时已经删除了空格,所以当您下次再次调用它时,没有任何内容可以删除,所以每次最后都会有0个空格。 希望这有帮助!

答案 2 :(得分:1)

删除您stripWhite(str);的第一个电话,下面的行足以计算空格。

cout << "I removed " << stripWhite(str) << " from this sentence.";