gpt4 book ai didi

c - 将函数返回的数组分配给二维数组的一行 C 编程

转载 作者:行者123 更新时间:2023-11-30 19:10:00 26 4
gpt4 key购买 nike

我有一个返回缓冲区数组的函数。调用函数有一个二维数组,我需要将返回的数组仅分配给二维数组的特定行。我的代码不起作用。请帮助我理解我的错误。

在调用函数中:

char buff[5][BUFF_SIZE] = {{0}};
char statement[] = "USE THIS STATEMENT;";
char name[] = "some_name";
int value1 = 90;
double value2 = 20;

/**The statement below causes the error that array is not assignable **/
buff[0] = function(statement, name, value1, value2));
if( buff[0] != NULL)
// do stuff

功能:

char *function(char *statement, char *name, int value1, double value2)
{
size_t size = BUFF_SIZE;

char *buff = malloc (size);
int nchars;
if (buff == NULL)
return NULL;

/* Try to print in the allocated space. */
nchars = snprintf(
buff,
BUFF_SIZE,
statement,
value1,
value2,
name
);
if (nchars >= size)
{
/* Reallocate buffer now that we know
how much space is needed. */
size = nchars + 1;
buff = realloc (buff, size);

if (buff != NULL)
/* Try again. */
snprintf(
buff,
size,
statement,
value1,
value2,
name
);
}
/* The last call worked, return the string. */
return buff;
}

非常感谢!编辑:更正了第二次调用 snprintf 时的错误

最佳答案

您有以下声明:

char buff[5][BUFF_SIZE] = {{0}};

这是一个字符的二维数组。但是您的函数返回一个 char *,它与 buff 的行不兼容,因为它们没有 char * 类型。因此,将您的声明替换为:

char *buff[5] = {NULL};

这是一个指向 char 的指针数组(在本例中为 5 个)。然后为其分配内存:

for (i = 0; i < 5; i++)
{
buff[i] = malloc (size*sizeof(char)); //or just malloc(size);
if (buff[i] == NULL)
printf ("Error allocating memory\n");
}

关于c - 将函数返回的数组分配给二维数组的一行 C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066782/

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