下面是我正在编译的用于用“%20”替换空格的程序,但是当我运行它时,输出窗口显示空白并显示一条消息“arrays5.exe 发生了问题”
#include <iostream>
#include<cstring>
using namespace std;
void method(char str[], int len) //replaces spaces with "%20"
{
int spaces, newlen,i;
for (i=0;i<len;i++)
if(str[i]==' ') spaces++;
newlen=len+spaces*2;
str[newlen]=0;
for (i=len-1;i>=0;i--)
{
if(str[i]==' ')
{
str[newlen-1]='0';
str[newlen-2]='2';
str[newlen-3]='%';
newlen=newlen-3;
}
else
{
str[newlen-1]=str[i];
newlen=newlen-1;
}
}
}
int main()
{
char str[20]="sa h ";
method(str,5);
cout <<str<<endl;
return 0;
}
请帮我找出错误。谢谢
最佳答案
spaces
在递增之前未初始化。
你应该给它一个初始的默认值。
未初始化的变量将具有规范未定义的值。如果幸运的话,这个值可能是 0,但是这个值很可能是数据类型可能代表的值范围内的任何值。
当 spaces
正确初始化时,您的程序将正常编译和运行。
关于c++ - 程序错误 : for replacing spaces with "%20",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380355/