#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 40
#define MAX_FILE_LENGTH 255
#define GET_NAME "%255s"
int main(void)
{
unsigned int i, l;
int select_value;
char exit_switch = 1;
char *p_list[MAX_LENGTH];
char f_list[MAX_LENGTH][MAX_FILE_LENGTH + 1];
for (i = 0; i < MAX_LENGTH; i++){
p_list[i] = NULL;
f_list[i][0] = 0;
}
unsigned int j;
char *p_temp;
l = 0;
do {
puts("请选择操作命令:");
puts("(1)添加新文件");
puts("(2)删除列表中的文件");
puts("(3)打印播放列表");
puts("(4)退出程序");
puts("(5)按名称排序");
if(scanf("%1d", &select_value)) {
switch (select_value) {
case 1: {
if (l < MAX_LENGTH){
puts("请输入的文件名:");
for(i = 0; i < MAX_LENGTH; i++){
if(!f_list[i][0]){
while (!scanf(GET_NAME, f_list[i])){
puts("请输入正确的文件名!");
}
p_list[l++] = f_list[i];
break;
}
}
}
else {
puts("文件列表已满!");
}
break;
}
case 2: {
puts("请输入文件编号:");
scanf("%u", &i);
if(i > 0 && i <= l) {
*p_list[--i] = 0;
do {
p_list[i] = p_list[i + 1];
i++;
} while(i < l - 1);
l--;
}
else
puts("您所输入的文件编号不存在!");
break;
}
case 3: {
for(i = 0; i < l; i++)
printf("%d : %s\n", i + 1, p_list[i]);
break;
}
case 4: {
exit_switch = 0;
break;
}
case 5: {
if (l > 1) {
for(i = 0; i < l - 1; i++) {
for(j = i + 1; j < l; j++) {
if (*p_list[i] > *p_list[j]) {
p_temp = p_list[i];
p_list[i] = p_list[j];
p_list[j] = p_temp;
}
}
}
}
break;
}
}
}
} while(exit_switch);
return EXIT_SUCCESS;
}