gpt4 book ai didi

c - C 中数组越界

转载 作者:行者123 更新时间:2023-11-30 18:33:21 25 4
gpt4 key购买 nike

我想知道如何在 C 中捕获 IndexOutofbounds。我不希望我的程序异常退出,我想为用户打印一条消息来澄清错误

如何检查此案例

 char a[50];
fgets(a,200,stdin);

我需要退出程序并抛出错误,并且我不需要更改200以使用sizeof()

最佳答案

这是你在 C 语言中根本无法做到的事情之一。至少不会没有很多麻烦。您必须自己跟踪这些事情。因此,当您声明一个数组时,您将必须存储大小并执行如下操作:

size_t size=1000;
int arr[size];
...
if(i>=size || i<0) {
// Handle error
} else {
// Do something with arr[i]
}

您可以使用如下结构进行抽象并使其更像 Java:

struct array {
int *val;
size_t size;
};

int getVal(struct array array, size_t index) {
if(index>=array.size || index<0)
// Handle error
else
return array.val[index];
}

但是,如果您使用这样的结构,那么很有可能切换到另一种语言是个好主意。

如果我们看一下您的特定示例:

char a[50];
fgets(a,200,stdin);

很遗憾地说,在这种情况下不可能让 fgets 抛出错误。

关于c - C 中数组越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052378/

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