C语言printf添加附加无用信息
C language printf add additional useless message
我尝试模拟 linux 文件权限使用 st_mode,但是当我打印结果时,它有一条额外的不需要的消息。
/* 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'
转换说明符 %s
需要一个表示字符串的参数。但是,数组 buf
似乎不包含字符串。
要么将数组扩大一个字节作为终止零
char buf[10] = {0};
或者直接使用(在转换符号前指定精度s
)
printf("%.9s", buf);
或者
printf( "%.*s", ( int )sizeof( buf ), buf );
我尝试模拟 linux 文件权限使用 st_mode,但是当我打印结果时,它有一条额外的不需要的消息。
/* 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'
转换说明符 %s
需要一个表示字符串的参数。但是,数组 buf
似乎不包含字符串。
要么将数组扩大一个字节作为终止零
char buf[10] = {0};
或者直接使用(在转换符号前指定精度s
)
printf("%.9s", buf);
或者
printf( "%.*s", ( int )sizeof( buf ), buf );