如何将动态数字字符串转换为动态数组整数

时间:2011-11-04 17:09:19

标签: c

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

2 个答案:

答案 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

最后,你忘记了返回任何内容 - 这不会编译。