Witam, mam problem z pewną częścią mojego programu, który ma za zadanie edytować tagi ID3v1 mp3.
void edit(char location[100])
{
union writef
{
char title[61];
char artist[61];
char album[61];
char year[5];
char comment[61];
char genre;
}write;
char a,b;
FILE *f_mp3;
f_mp3=fopen(location,"r+");
do
{
printf("Co chcesz zedytowac?\n");
printf("1 - Tytul, 2 - Artysta, 3 - Nazwa utworu, 4 - Rok wydania\n"
"5 - Komentarz, 6 - Typ muzyki\n");
scanf("%c",&a);
switch(a)
{
case '1':
fseek(f_mp3,-125,SEEK_END);
printf("Wpisz nowy tytul\n");
gets(write.title);
fputsol(write.title,f_mp3);
fflush(stdin);
break;
case '2':
fseek(f_mp3,-95,SEEK_END);
printf("Wpisz nowego wykonawce\n");
gets(write.artist);
fputsol(write.artist,f_mp3);
fflush(stdin);
break;
case '3':
fseek(f_mp3,-65,SEEK_END);
printf("Wpisz nazwe albumu\n");
gets(write.album);
fputsol(write.album,f_mp3);
fflush(stdin);
break;
case '4':
fseek(f_mp3,-35,SEEK_END);
printf("Wpisz nowy rok wydania\n");
gets(write.year);
fputsol(write.year,f_mp3);
fflush(stdin);
break;
case '5':
fseek(f_mp3,-31,SEEK_END);
printf("Wpisz komentarz\n");
gets(write.comment);
fputsol(write.comment,f_mp3);
fflush(stdin);
break;
case '6':
write.genre=genreadd(f_mp3);
fseek(f_mp3,-1,SEEK_END);
fputc(write.genre,f_mp3);
fflush(stdin);
break;
}
printf("Czy chcesz dalej edytować? Wpisz t jesli chcesz.\n");
b=getchar();
if(b=='t')
a=='1';
else
{
a='b';
fclose(f_mp3);
}
}while(a=='1' || a=='2' || a=='3' || a=='4' || a=='5' || a=='6');
}
Chodzi o to, że program omija miejsce w którym trzeba wpisać znak, więc omija całego case, jak również funkcja do … while mi nie wchodzi bo nie zależnie co zrobię to mi wychodzi. A te rzeczy muszą działać.