我有以下结构:
/** 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'或者我是否需要遍历整个字节数组并单独打印字符?
要打印空格填充的char数组(但不一定是以null结尾),可以使用printf的宽度说明符:
printf("%.*s\n", sizeof de.d_name, de.d_name);
Run Code Online (Sandbox Code Playgroud)