gpt4 book ai didi

c - 想用realloc增加动态数组,不成功

转载 作者:行者123 更新时间:2023-12-04 10:50:44 25 4
gpt4 key购买 nike

void main()
{
int *ptr, size, i;
printf("size is:\n");
scanf("%d", &size);
ptr = (int*)malloc(size * sizeof(int));
if (ptr == NULL)
{
printf("Error");
return;
}
ptr = (int*)realloc(ptr, (size + 10) * sizeof(int));
for (i = 0; i <size+10; i++)
{
printf("number %d...\n", i);
scnaf("%d", &ptr[i]);
}
for (i = 0; i < size + 10; i++)
{
printf("%d ", ptr[i]);
}
free(ptr);
}

想要创建一个动态数组,在内存中再添加 10 个位置,并从用户那里吸收值。
例如,如果用户输入 5 作为大小,则总大小将为 size=5+10=15,如果用户输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

输出将是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

我得到的错误是:
Error   LNK2019 unresolved external symbol _scnaf referenced in function _main  realloc 
Error LNK1120 1 unresolved externals realloc

你能试着帮助我理解为什么我会收到这个错误吗?

最佳答案

对于根据 C 标准的初学者,不带参数的函数 main 应声明为

int main( void )

其次是有错别字。你写了 scnaf而不是 scanf .

你必须包含标题
#include <stdio.h>
#include <stdlib.h>

这是一个演示程序。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
size_t size;

printf( "size is: " );
scanf( "%zu", &size );

int *ptr = malloc( size * sizeof( int ) );

if ( ptr == NULL )
{
puts( "Error" );
return EXIT_FAILURE;
}

int *tmp = realloc( ptr, ( size + 10 ) * sizeof( int ) );

if ( tmp != NULL )
{
size += 10;
ptr = tmp;
}

for ( size_t i = 0; i < size; i++ )
{
printf("number %zu => ", i );
scanf( "%d", ptr + i );
}

for ( size_t i = 0; i < size; i++ )
{
printf( "%d ", ptr[i] );
}

putchar( '\n' );

free( ptr );

return EXIT_SUCCESS;
}

它的输出可能看起来像
size is: 5
number 0 => 1
number 1 => 2
number 2 => 3
number 3 => 4
number 4 => 5
number 5 => 6
number 6 => 7
number 7 => 8
number 8 => 9
number 9 => 10
number 10 => 11
number 11 => 12
number 12 => 13
number 13 => 14
number 14 => 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

关于c - 想用realloc增加动态数组,不成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59482501/

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