我一直在教学习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;
}
答案 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.";