我尝试使用st_mode模拟linux文件权限,但是当我打印结果时,它显示了一条额外的不需要的消息。
/* file permission */
char buf[9] = {0};
char tmp_buf[] = "rwxrwxrwx";
int i;
for(i = 0; i < 9; i++) {
if (sta.st_mode & (1 << (8 - i))) buf[i] = tmp_buf[i];
else buf[i] = '-';
}
printf("%s", buf);这是我的代码,但结果类似于'rw-rw-r--rwxrwxrwx‘,strlen(buf)是18...有人能帮帮忙吗?我不确定为什么temp_buf要附加在'buf‘后面
发布于 2020-06-05 05:11:35
转换说明符%s需要一个表示字符串的参数。但是,数组buf似乎不包含字符串。
或者用多一个字节作为终止零来扩大数组
char buf[10] = {0};或者直接使用(在转换符号s之前指定精度)
printf("%.9s", buf);或者另选地
printf( "%.*s", ( int )sizeof( buf ), buf );https://stackoverflow.com/questions/62204157
复制相似问题