我正在寫使用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