2014-01-17 42 views
0

代碼如下:printf(「%。6a」,0.1);在android adb shell可執行文件將得到錯誤的輸出「a」,這似乎不會明智地處理格式字符串「%.6a」。printf格式字符串「%a」在Android NDK上打印出錯誤信息

可執行文件的測試代碼與「hello world」演示類似。

main.c文件:

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    printf("\n=--------------=\n"); 
    printf("%.6a", 0.1); 
    return 0; 
} 

文件Android.mk:

include $(CLEAR_VARS) 
LOCAL_MODULE := and_demo 
LOCAL_CFLAGS += -std=c99 
LOCAL_SRC_FILES := vec_add.c 
include $(BUILD_EXECUTABLE) 

NDK的版本是R9。我用-std = c99設置了支持Android.mk文件中的「%a」格式的字符串(不確定是否正確)。我運行它時只有一個字符'a'。

我該如何解決這段代碼,讓程序打印正確的字符串?

回答

0

它看起來像仿生不支持%a轉換說明(libc中的Android版本的「移動切下」):

https://github.com/android/platform_bionic/blob/master/libc/stdio/vfprintf.c 
+0

感謝您的及時重播。當我真的需要這個功能時,我能鏈接像glibc這樣的libc的完整版嗎? – user3205446