检查代码错误:void lrc_head_resolve(char *song_msg[],char * lrc_text[]) { const char* delim =":"; for(int i=0;i<4;i++) { char* t=strtok(lrc_text[i],delim); if(t!=NULL) { char* tri_t=t; while(*tri_t==' ') { tri_t++; } int len=strlen(tri_t); while(tri_t[len-1]==' '&&len>0) { tri_t[len-1]='\0'; len--; } song_msg[i]=tri_t; } } }
时间: 2024-02-10 19:27:10 浏览: 94
代码中可能存在几个错误:
1. 函数参数 `char *song_msg[]` 应该改为 `char *song_msg`,因为你传入的是指向字符串数组的指针,而不是指向字符串数组的指针的指针。
2. 函数参数 `char *lrc_text[]` 应该改为 `char lrc_text[][MAX_LENGTH]`,其中 `MAX_LENGTH` 是你定义的每行歌词的最大长度。这样你才能正确地传递歌词文本的二维数组。
3. 在使用 `strtok` 函数之前,你需要确保 `lrc_text[i]` 是以空字符结尾的字符串。如果不是,你需要在 `lrc_text[i]` 的末尾添加一个空字符。
综上所述,修正后的代码如下:
```c
void lrc_head_resolve(char *song_msg, char lrc_text[][MAX_LENGTH])
{
const char* delim = ":";
for (int i = 0; i < 4; i++)
{
// 确保lrc_text[i]以空字符结尾
int len = strlen(lrc_text[i]);
if (len > 0 && lrc_text[i][len - 1] != '\0')
{
lrc_text[i][len] = '\0';
}
char* t = strtok(lrc_text[i], delim);
if (t != NULL)
{
char* tri_t = t;
while (*tri_t == ' ')
{
tri_t++;
}
int len = strlen(tri_t);
while (len > 0 && tri_t[len - 1] == ' ')
{
tri_t[len - 1] = '\0';
len--;
}
song_msg[i] = tri_t;
}
}
}
```
请注意,我做了一些假设,如 `MAX_LENGTH` 是一个适当的值,并且你已经包含了正确的头文件。如果你有其他要求或者代码上下文,请提供更多细节。
阅读全文