gpt4 book ai didi

C: int string 接受所有值,但只有一个?

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:34 25 4
gpt4 key购买 nike

我在互联网上找不到类似的问题。

我有一个包含随机 int 值的文件。我想将它们保存在字符串中。我想在开始时分配一 block 内存,然后在读取文件期间,如果 block 不足,则重新分配足够的空间。

ptr = (int*)malloc(SIZE*sizeof(int));
while ((fscanf(fp, "%d", &num)) != EOF){

switch (state){

case 0:

if (counter < SIZE){
*(ptr + index) = num;
index++;
}
else state = 1;

break;
case 1:

ptr = realloc(ptr, counter*sizeof(int));
*(ptr + index) = num;
index++;
break;
}

counter++;

}

问题是,我的代码跳过了第 SIZE 个整数。如果我尝试像这样保存值:

else {
*(ptr + index) = num;
index++;
state = 1;
}

然后我在第 SIZE 个元素之后得到随机负值?

最佳答案

在您的原始代码中,当 counter == SIZE 时,您中断然后将 counter 递增到 SIZE + 1,然后再保存 SIZE 元素。因此,它跳过了 SIZE 元素。

在您尝试修复代码时,您似乎正在将第 SIZE 个整数保存到尚未分配的内存中?

去掉开关;你可以用 if/else 做任何你想做的事。

关于C: int string 接受所有值,但只有一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686578/

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