gpt4 book ai didi

c - 防止c中字符串溢出

转载 作者:行者123 更新时间:2023-11-30 19:15:43 25 4
gpt4 key购买 nike

使用C我想分配最大初始字符串长度的堆空间,在我的例子中是6,然后 每次字符串即将溢出时,将可用空间加倍。我想逐个字符地构建字符串。

size_t nstring = 6;
char *arr = malloc(nstring);

int i;
for (i = 0; i < 55;i++){

if (i == nstring) {
printf("mAx sized!!");
arr = realloc(arr, nstring*2);
nstring = nstring*2;
}
arr[i] = 'f';

}
arr[i] = '\0';
printf("length %lu\n", strlen(arr));
free(arr);

最佳答案

sizeof是指针的大小,而不是它指向的数据的大小。

改变

nstring = sizeof(arr) + 1;

nstring = nstring*2;

请记住,arr 是一个指针,而指针始终是地址的大小(4 表示 32 位,8 表示 64 位,等等)。

编辑:这不是唯一的问题。完成后,您还需要添加空终止符,并且还在打印语句中使用“sizeof(arr)”。您还需要修复这些问题。

关于c - 防止c中字符串溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997990/

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