请问下面程序输出几,为什么?

#include
#include
typedef struct _data
{
int id;
char buff[10];
}data_t;
int main
{
data_t data;
char ch[10] = "0123456789";
printf("d\n",strlen(ch));
}

会输出d,而且会报错的吧,printf里面要用也得是%d,不是d。如果是%d的话会输出10,strlen代表字符串的长度。
顺带提醒一下。你结构体定义了但是没用

加上%以后,输出的不是10是因为,strlen计算的时候是以读到'\0'来计算字符串长度的,
而你char ch[10]全部用来装10个字符了,没有装'\0',所以输出一个什么数都有可能。

不确定的值,因为strlen是以'\0'标记来计算字符串的长度信息。而你的char[10]数据没有位置来存在这个标记,所以结果未知~