void select_song_part(char* filename, list* l, int y, int z) { FILE* fp=NULL; z -= 1; switch (y) { case(1):clear(); printf("请输入新的歌曲名\n"); scanf("%s", l->a[z].name); break; case(2):clear(); printf("请输入新的歌手\n"); scanf("%s", l->a[z].singer); break; case(3):clear(); printf("请输入新的专辑名\n"); scanf("%s", l->a[z].album); break; case(4):clear(); printf("请输入新的发行日期\n"); scanf("%d.%d.%d", &l->a[z].year, &l->a[z].month, &l->a[z].day); break; default: break; } if ((fp = (fopen(filename, "rb+")) == 1)) printf("修改失败\n"); fseek(fp, z * sizeof(music), 0); if (fwrite(&l->a[z], sizeof(music), 1, fp) != 1) printf("写入失败\n"); fclose(fp); }这段代码有什么问题
时间: 2023-02-08 17:03:46 浏览: 131
这是一段 C 语言代码,它的功能是在一个音乐播放器中修改歌曲信息。
其中,函数 `select_song_part` 接受四个参数:
- `filename`:文件名。
- `l`:指向歌曲信息的结构体的指针。
- `y`:表示要修改的信息的类型。
- `z`:表示要修改的歌曲的编号。
代码中的 `switch` 语句根据变量 `y` 的值进行分类,如果 `y` 等于 1,则修改歌曲名;如果 `y` 等于 2,则修改歌手名;以此类推。
每次修改都会用到函数 `clear`,这个函数的功能是清空屏幕。
之后,每次修改都会输出一个提示信息,然后使用函数 `scanf` 读入新的信息,并将其存储到歌曲信息结构体的对应字段中。
阅读全文