[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[off] Dúvida em programaçã o em c abrir lista do xmms.



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



Reply to: