有大神帮忙注解下面这段C语言代码吗?感谢!!
staticu16*get_one_mp3_file(file_list_t*p_list,u16*file_name){u32loopi=0;for(loopi=0;l...
static u16 *get_one_mp3_file(file_list_t *p_list, u16 *file_name)
{
u32 loopi = 0;
for (loopi = 0; loopi < p_list->file_count; loopi ++)
{
if (p_list->p_file[loopi].type == NOT_DIR_FILE
&& uni_strcmp(p_list->p_file[loopi].p_name, file_name) == 0)
{
OS_PRINTF("%s\n",p_list->p_file[loopi].p_name);
return p_list->p_file[loopi].name;
}
}
return NULL;
} 展开
{
u32 loopi = 0;
for (loopi = 0; loopi < p_list->file_count; loopi ++)
{
if (p_list->p_file[loopi].type == NOT_DIR_FILE
&& uni_strcmp(p_list->p_file[loopi].p_name, file_name) == 0)
{
OS_PRINTF("%s\n",p_list->p_file[loopi].p_name);
return p_list->p_file[loopi].name;
}
}
return NULL;
} 展开
1个回答
展开全部
static u16 *get_one_mp3_file(file_list_t *p_list, u16 *file_name) //得到1个MP3文件
{ //返回值是文件名
u32 loopi = 0; //循环变量
for (loopi = 0; loopi < p_list->file_count; loopi ++) //从第1个参数中取得文件数,进行循环
{
if (p_list->p_file[loopi].type == NOT_DIR_FILE //条件:当前列表的第loopi个文件不是目录
&& uni_strcmp(p_list->p_file[loopi].p_name, file_name) == 0) //与给定文件名一致
{
OS_PRINTF("%s\n",p_list->p_file[loopi].p_name); //显示文件名
return p_list->p_file[loopi].name; //返回文件名字符串起始地址
}
}
return NULL; //上边没有找到,则返回空表示没找到
}
{ //返回值是文件名
u32 loopi = 0; //循环变量
for (loopi = 0; loopi < p_list->file_count; loopi ++) //从第1个参数中取得文件数,进行循环
{
if (p_list->p_file[loopi].type == NOT_DIR_FILE //条件:当前列表的第loopi个文件不是目录
&& uni_strcmp(p_list->p_file[loopi].p_name, file_name) == 0) //与给定文件名一致
{
OS_PRINTF("%s\n",p_list->p_file[loopi].p_name); //显示文件名
return p_list->p_file[loopi].name; //返回文件名字符串起始地址
}
}
return NULL; //上边没有找到,则返回空表示没找到
}
追问
这里的*是获取文件的意思?static u16 *get_one_mp3_file(file_list_t *p_list, u16 *file_name),不知道为什么这么写
loopi < p_list->file_count,这里的->啥意思?
p_list->p_file[loopi]也是看不懂
return p_list->p_file[loopi].name; 取地址不是用&这个吗?
追答
这里的返回值是:u16 *,是指向u16数据的指针,也可以理解成,文件名每个字符是u16型数据,指向文件名第1个字符的地址就是u16 *
plist是个指向某个结构的指针,访问它指向的结构中的某个成员变量就用plist->再写结构中的变量名即可,p_list->file_count是取p_list指向结果中变量file_count的值
p_list->p_file[loopi].name说明p_list指向的结构中包含另一个结构数组,每个元素是一个文件信息,当前元素就是p_file[loopi],元素结构中的变量name是一个字符串数组(u16 *型的变量),这里strcmp函数要求提供两个字符串起始地址好进行比较,一个是列表中第n个文件名,一个是函数参数给定的变量名
由于name已经是字符串首地址了,可以这样直接返回,如果要用到&的话要写:
return &(p_list->p_file[loopi].name[0])
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询