編譯爲i386 arch時,以下調用sprintf
失敗。使用Android NDK。我試着用GCC和clang編譯,結果是一樣的。我正在使用android-ndk-r10e
(將APP_STL設置爲gnustl_shared
與GCC,c++_shared
與clang一起)。它的工作原理如下(I?)用於爲具有相同配置的ARM進行編譯時使用,此外,當我使用GCC 5.2編譯i386 Linux時。當格式包含非ASCII字符時,sprintf不起作用
int n = sprintf(buf, "\xc0%s", "test"); // n == 0, strlen(buf) == 0
通話結束後,buf
是空的,而不是含有期望的字符序列「\ xc0test」。 sprintf
似乎忽略了第一個非ASCII字符後的所有內容。下面的代碼將「測試」 buf
,留下的最後一個字節:
sprintf(buf, "%s\xc0", "test"); // strlen(buf) == 4
在另一方面,這工作得很好:
sprintf(buf, "%s", "test\xc0"); // strlen(buf) == 5
我茫然不知所措。
這對我來說非常合適。我看到你是CrystaX的創造者,所以非常感謝你。 'stdlib.h'不包含'labs',但這是微不足道的修復。 – user1421750
嗯,實際上'stdlib.h'包含'labs'定義。如果您遇到問題,請隨時在我們的問題跟蹤器上提交一個最小可重現案例的錯誤 - https://tracker.crystax.net/projects/ndk。 –