c++ - 替换char数组中的字符c++

标签 c++ arrays string char

我有一个用 1 和 0 填充的字符数组。如果 1 后面有 0,那么他们需要交换位置。循环重复 k 次。我写了这段代码,但是当我尝试打印字符串时,它没有打印出任何东西,或者只是打印出一个 1。为什么它会这样做,为什么它不起作用?

#include <iostream>
using namespace std;
int const limit = 100000;

int main() {
    int k;
    char s[limit];

    cin >> k;
    cin >> s;

    for (int i = 0; i < k; i++) {
        for (int j = 0; j < strlen(s); j++)
            if (s[j + 1] == '0' && s[j] == '1') {
                s[j + 1] = '1';
                s[j] = 0;
                }
            }
    }

    cout << s;

    return 0;
}

最佳答案

a) 有一个错误的大括号。

b) 您需要将 s[j] = 0 更改为 s[j] = '0'

c) 虽然不是错误,但为了澄清起见,我会在第二个 for 循环周围添加花括号。这使代码更易于阅读。

#include <cstring>
#include <iostream>

using namespace std;
int const limit = 100000;

int main() {
    int k;
    char s[limit];

    cin >> k;
    cin >> s;

    for (int i = 0; i < k; i++) {
        for (int j = 0; j < strlen(s); j++) {
            if (s[j + 1] == '0' && s[j] == '1') {
                s[j + 1] = '1';
                s[j] = '0';
            }
        }
    }

    cout << s;

    return 0;
}

关于c++ - 替换char数组中的字符c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334566/

相关文章:

java - 在android中重新组合java中的分割字符串

c++ - 找不到过程入口点__gxx_personality_v0

c# - C++ Interop : How do I call a C# class from native C++, 类是非静态的吗?

c++ - 在这种情况下我会返回什么

c++ - 将逗号分隔的文本文件读入数组

javascript - 从另一个具有特定索引的数组创建

java - 创建具有预定长度的数组的 ArrayList

使用存储过程将java数组blob数据插入到oracle数据库(无法转换为内部表示:error)

python - 字符串操作/正则表达式 - 查找和替换

python - 用 Pandas 快速删除标点符号