Bom dia. Estou tentado fazer um programa em c que vai ler um arquivo de texto na verdade a lista xmms(player de mp3), para gravar um cd de audio baseado na lista chamando a função
system("mpg123 --cdr - ARQUIVO_QUE_VOU CONCATENAR_VINDO_DA_LISTA_DO_XMMS | cdrecord -v speed=4 dev=0,0,0 -nofix -audio -"); tudo bem consigo ler o a lista e imprimir na tela exemplo do que sai na tela. #EXTM3U #EXTINF:621,Antonio Vivaldi - Summer /mnt/hda7/Musicas/Vivaldi - Four Seasons - Summer.mp3 #EXTINF:302,ANGRA - CARRY ON /mnt/hda7/Musicas/Angra - Carry On.mp3 #EXTINF:340,Angra - Judgement Day /mnt/hda7/Musicas/Angra - Judgement Day.mp3 #EXTINF:291,Angra - Nova era /mnt/hda7/Musicas/Angra - Nova era.mp3 Ou seja primeira linha #EXTM3U --> informação inutil para meu programa #EXTINF:621,Antonio Vivaldi - Summer --> informação inutil para meu programa /mnt/hda7/Musicas/Vivaldi - Four Seasons - Summer.mp3 --> Informação que preciso para meu programa. Ou seja primeira linha ignoro depois vou na rotina pulo uma linha leio a próxima pulo uma linha leio a próxima e por ai vai... Tem como fazer algo parecido com o fseek? Pois não estou sabendo em qual momento estou pulando linha ou não. int fseek( FILE *fp, long offset, int whence Oque e esse paramentro long offset??? Segue abaixo o script. Grato, Pablo Henrique #include <stdio.h> #include <stdlib.h> int fsize(FILE *fp); int main(int argc, char **argv){ FILE *fp; char *musicas; int i; if(argc < 2){ printf("\nparametros incorretos!\n"); exit(1); } if((fp = fopen(argv[1],"r")) == NULL){ printf("\narquivo não encontrado\n"); } musicas = (char *) malloc(sizeof(char) * fsize(fp)); if(musicas == NULL){ printf("\nfalta de memória\n"); exit(0); } i = 0; while(!feof(fp)){ musicas[i] = fgetc(fp); printf("%c",musicas[i]); i ++; } fclose(fp); return(0); } int fsize(FILE *fp){ int contador = 0; char tmp[1]; while(!feof(fp)){ contador ++; tmp[0] = fgetc(fp); } //volta para o inicio do arquivo fseek(fp,0,SEEK_SET); return(contador); }