我正在写使用C.带我想做的事情得到一个子,我已经写了一个简单的C代码,它的一个普通旧工作的Android本机应用程序的结束。这是代码:奇怪的字符(0010)在字符串
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的输出截图:
我想填充更多的空值,2或甚至3,但并没有改变任何东西!
是否有人知道它是什么,以及如何才能摆脱呢?
糟糕!同样的错误不会阻止开发人员:D谢谢。 – Mousa
谢谢你的提示,但ndk在我不转换它时给出了一个错误:“在函数'char * get_part_allocated(char const *,int,int)'中:错误:从'void *'无效转换为' char *'[-fpermissive]“我认为这可能是ndk使用C++编译器,对吧? – Mousa
正确,在C中强制转换是可选的(并且不必要),但对于C++强制转换。这可能意味着,你正在编译你的.c文件,就好像它是.cpp文件一样。正如你所看到的,它有这种相对无害的副作用,但可能有其他的。检查您是否可以强制编译器将.c和C++用于.cpp文件。 – usr2564301