struct integer* convert_integer(char* stringInt)
{
struct integer* convertedInt_1;
char* stringArray3 = (char *) malloc (sizeof(char));;
free(stringArray3);
stringArray3 = stringInt;
convertedInt_1->digits = atoi(stringArray3);
stringArray4 = stringInt;
}
这是代码示例。当我使用c中的标准库时,这段代码给出了一个错误:警告:赋值使指针从整数变为没有强制转换“
所以我需要知道如何将动态数字字符串转换为dynimacally struct integer
答案 0 :(得分:1)
此处不需要为char字符串进行任何动态分配,也不需要额外的char *
指针。
struct integer* convert_integer(char* stringInt)
{
/*Allocate memory to structure,You cannot return pointer to local structure*/
struct integer* convertedInt_1 = (struct integer*)malloc(sizeof(*convertedInt_1));
/*Convert the string to integer*/
int i = atoi(stringInt);
/*Assign converted integer to structure member*/
convertedInt_1->digits = i;
/*return pointer to heap allocated structure*/
return convertedInt_1 ;
}
答案 1 :(得分:0)
此代码存在很多问题,但我会尝试引导您完成这些问题。
一,你malloc
只有一个char
内存,而不是保存阵列所需的内存量。如果字符串不是以null结尾,你真的需要包含一个参数,以便更改数组的大小。
其次,你试图在free
之后使用内存。这是不好的。很坏。完成后你应该只释放记忆。
接下来,您正尝试一次atoi
整个阵列。这将尝试将整个字符串更改为一个数字,而不是一个int
。
我想要你想要的是将每个字符从stringInt转换为结果中的(单个数字)int。为此,使用for循环遍历数组。
我很确定你想要使用int
而不是integer
。
最后,你忘记了返回任何内容 - 这不会编译。