我正在使用 C 为 android 编写本机应用程序。在某个地方,我想做一个简单的获取子字符串的旧工作,为此我编写了一个简单的 C 代码。这是代码:
char* get_part_allocated(const char* src, int start, int len)
{
LOGI("copying [%s] from [%d] len [%d]\n", src, start, len);
int nlen = len+1;
char* alloc = (char*)malloc(nlen*sizeof(char));
strncpy(alloc, src+start, len);
LOGI("result is: [%s]\n", alloc);
return alloc;
}
当我在 PC 上编译和运行这段代码时,我得到了预期的结果,但是当我在 android 上运行它时,它最后总是有一个奇怪的字符,这会破坏我的程序流程并导致错误!
这是 logcat 输出的屏幕截图:
我尝试填充更多的 NULL,2 甚至 3,但没有改变任何东西!
有人知道它是什么,我该如何摆脱它?