"test"但如果我使用调试器,我会看到 input[-6ren">
gpt4 book ai didi

c - 怎么了?获取()

转载 作者:行者123 更新时间:2023-12-02 05:23:44 25 4
gpt4 key购买 nike

让我们考虑这两行:

char input[1];
gets(input);

假设输入是“测试”。 printf("%s\n",input) => "test"但如果我使用调试器,我会看到 input[0]='' no input[1]...到底发生了什么?

最佳答案

那是缓冲区溢出,仅供引用。为了好玩,在 char input[1]; 之后添加 char untouched[20]; 并打印 untouched。不要使用 gets(),使用 fgets() 或其他带有边界检查的东西。

调试器不显示 input[1] 因为没有这样的东西。您的 char input[1]; 声明分配了一个长度为 1 的数组,而不是从 0 到 1 的数组。

关于c - 怎么了?获取(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com