【问题标题】:How to store int in char * in iphone如何在iphone中将int存储在char *中
【发布时间】:2012-07-21 16:48:25
【问题描述】:

谁能帮助将 Int 转换为 char 数组 因为我有缓冲区

char *buffer = NULL;  
int lengthOfComponent = -1;   
char *obj;
buffer[index]= (char *)&lengthOfComponent; 

如果我这样做,它会导致 EXCESS BAD ACCESS 在执行后如何使用 memcpy 将 obj 的值存储到缓冲区

【问题讨论】:

  • 使用 sprintf 或 printf,或 NSLog 或 NSString stringWithFormat。
  • 这不是iphone或objective-c

标签: iphone objective-c pointers char memcpy


【解决方案1】:

当然不能写入buffer[index],它没有分配!

buffer = malloc(sizeof(char) * lengthOfBuffer);

应该这样做。之后,您可以使用 memcpy 或分配来写入缓冲区,就像您正在做的那样。

【讨论】:

  • 如何使用 memcopy 将 obj[i] 复制到缓冲区
【解决方案2】:
buffer[index] = (char *)&lengthOfComponent;

buffer[index] 就像取消引用指针。但是buffer 没有指向任何有效位置。因此出现运行时错误。

C 解决方案是使用 snprintf。试试 -

int i = 11;
char buffer[10];

snprintf(buffer, sizeof(buffer), "%d", i);

【讨论】:

  • Incompatible pointer to integer conversion assigning to 'char' from 'char *'; dereference with * 它正在抛出这个警告
  • 这正是答案中提到的。 buffer[index] 给出索引位置的字符,但不给出指针。问题是你为什么要一个字符指针指向一个整数位置。
  • 基本上我希望组件值的长度存储在缓冲区中[索引]请帮我这样做
猜你喜欢
  • 2019-08-20
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
相关资源
最近更新 更多