c++避免溢出读入char数组

问题描述 投票:0回答:1

我正在尝试制作一个程序,其中用户必须输入不同大小的 char[] 数组。 我可以使用 string.h stdlib.h iostream 库。 如何检查用户输入是否大于 Max size-1(为 /0 保存位置),而不先询问大小并避免溢出崩溃。 谢谢你

我尝试查找不同的东西,但它们对于听起来不太复杂的东西来说似乎相当复杂,意识到我不能使用字符串,因为它位于字符串库中

c++ arrays char crash overflow
1个回答
0
投票

可以逐个读取字符并统计读取的字符数。

#include <iostream>

void read_string(char* dst, size_t dst_size) {
    if (dst_size == 0) return;
    size_t size_read = 0;
    while (size_read + 1 < dst_size) {
        char c;
        if (!(std::cin >> c) || c == '\n') break;
        dst[size_read++] = c;
    }
    dst[size_read] = '\0';
}

int main(void) {
    char buf[16];
    read_string(buf, sizeof(buf));
    std::cout << buf << '\n';
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.