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);
}

Responder a