在bytearray上打印

use*_*505 6 c printf

我有以下结构:

/** The description of an ordinary 8+3 DOS directory entry. */
struct  dirent
{
    byte    d_name[8];  //!< space padded name
    byte    d_ext[3];   //!< space padded extension

    byte    d_attr;     //!< the file attributes

    ......
};

printf("%s\n", de.d_name);
Run Code Online (Sandbox Code Playgroud)

我面临的问题是打印d_name我得到以下输出: 'INSTALL BAT!' 这不是我最想要的8个字符.

我的猜测是printf函数继续在内存中搜索字符串终止符,即使它超出了d_name边界.

有没有办法只打印'INSTALL'或者我是否需要遍历整个字节数组并单独打印字符?

Kla*_*äck 8

要打印空格填充的char数组(但不一定是以null结尾),可以使用printf的宽度说明符:

printf("%.*s\n", sizeof de.d_name, de.d_name);
Run Code Online (Sandbox Code Playgroud)