c++ - 程序错误 : for replacing spaces with "%20"

标签 c++

下面是我正在编译的用于用“%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/

相关文章:

c++ - 使用 FreeType 和 SDL2 渲染文本会生成白色方 block 而不是字符

c++ - 从文件中删除标题

c++ - 如何确定 C++ 应用程序中的可用 RAM 量?

C++:访问大型数据集中的重成员变量的最有效和简洁的方法

c++ - 输出迭代器的 value_type

c++ - 带模板参数包的方法无限递归调用,不调用重载方法

c++ - Green Hills Integrity 动态内存分配

c++ - 通过指针访问 C 中 4d 数组中的元素

c++ - c++中具有不同数据类型的变量参数

c++ - C++ 中 std::unique_ptr 和 std::shared_ptr 的区别