Newsgroup: it.comp.lang.c
Titolo: lettura file txt e array

Ciao ragazzi, vi chiedo una mano in quanto i tempi non sono stretti ma 
di più!
Devo consegnare un programma per l'esame di Computer Programming (Ansi 
C) e mi sono ingrippato è da ieri che non rieco ad andare avanti!
Un grazie in anticipo a tutti!
I punti che voglio fare?
1) Scansire una directory in cerca di file mp3 e salvare la path in un 
file txt.
fatto con "system("find /Multimedia/mp3 -iname \"*.mp3\" > scan.txt")");
Se avete altre alternative da suggerirmi sono tutto orecchie!!!
2) Leggere un file genere.txt che contiene qualcosa tipo:
	0 = Blues
	1 = Classic Rock
	2 = Country
	3 = Dance
	4 = Disco
	5 = Funk
	6 = Grunge
	7 = Hip-Hop
	8 = Jazz
	9 = Metal
	10 = New Age
e memorizzare ogni riga in un array. ho capito che si usa la funzione 
fgets() ma non so come usarla.
3) Creare una playlist in base al genere, quindi se selgo Jazz devo 
controllare in ogni file mp3 il tag id3 relativo al genere, e 
memorizzare in un file Jazz.pla la path di ogni mp3 del genere Jazz
Ciò che ho fatto in 3 giorni scopiazzando un po' è questo:
/*****************************/
/* Inclusione delle librerie */
/*****************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
/*************************************/
/* struttura per contenere i tag id3 */
/*************************************/
struct tag {
         char header[3];         /* Header del tag id3 */
         char titolo[30];        /* Titolo del brano */
         char artista[30];       /* Artista del brano */
         char album[30];         /* Album del brano */
         char anno[4];           /* Anno del brano */
         char commenti[29];      /* Commenti, generalemtne vuoto */
         char traccia[1];        /* Numero di traccia del brano */
         char genere[1];         /* Genere del brano */
};
FILE *fmp3,                        /* Puntatore del file di output, 
playlist */
       *outscan;                 /* Puntatore del file di output, 
scansione file.mp3 */
struct tag id3;                 /* Struttura del tag id3 */
char tag[3], twobyte[2];
char c;
char *cptr;
int traccia, genere;
int optind;
char* pulisci = "clear";        /* Pulisce il video */
/******************************************/
/* Funzione per la scansione dei file mp3 */
/******************************************/
int scan(void) {
printf("Avvio la scansione dei file mp3, leggi il file outscan.txt\n\n\n");
system("find /root -iname \"*.mp3\" > outscan.txt");
return 0;
}
int main(int argc, char* argv[]) {
system(pulisci);
scan();
/************************************/
/* Prepara la struttura del tag id3 */
/************************************/
memset(&id3, 0, sizeof(struct tag));
strncpy(id3.header, "TAG", 3);
/********************/
/* Apre il file mp3 */
/********************/
if ((fmp3=fopen(argv[optind], "r")) == NULL) {
         fprintf(stderr, "%s: Il file %s non è stato trovato!\n", 
argv[0], argv[optind]);
         return(255);
}
/**********************************************************/
/* Va all'inizio del blocco id3 (utlimi 128 bytes finali) */
/**********************************************************/
fseek(fmp3, -128L, SEEK_END);
/********************/
/* Legge gli indici */
/********************/
fread(tag, 1, 3, fmp3);
/*********************************/
/* Prende e stampa a video i tag */
/*********************************/
if (strncmp(tag, "TAG", 3) == 0) {
         fseek(fmp3, -128L, SEEK_END);
         fread(&id3, 1, 128, fmp3);
         fprintf(stdout, "Titolo: %s\n", id3.titolo);
         fprintf(stdout, "Artista: %s\n", id3.artista);
         fprintf(stdout, "Album: %s\n", id3.album);
         fprintf(stdout, "Anno: %s\n", id3.anno);
         fprintf(stdout, "Commenti: %s\n", id3.commenti);
         fprintf(stdout, "Traccia: %d\n", *id3.traccia);
         fprintf(stdout, "Genere: %d\n", *id3.genere);
         exit(0);
} else {
         fprintf(stdout, "Nessun tag id3 trovato in %s\n", argv[optind]);
         exit(1);
}
fclose(fmp3);
return(0);
}
Arigrazie....
Michele

 memorizzare in un file Jazz.pla la path di ogni mp3 del genere Jazz
man fopen/fseek/fread
Dal mio punto di vista, il fatto che tu abbia "scopiazzato" per scrivere
un programma dalla semplicità disarmante, è veramente penoso.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Hai ragione, solo che io non sono un programmatore, sono un semplice 
geometra che per motivi vari ha lascviato Architettura, mi ritrovo a 
lavorare in un'azienda di informatica e dato che questa è la strada che 
ho preso ho pensato di iscrivermi ad Informatica.
Io lavoro sul Web, a fare un applicazione in php non mi sarei sforzato 
più di tanto, ma per me il C è molto complesso. E come dire ad un 
informatico di progettare un il carico di un pilastro ed indicare quanti 
tondini di ferro mettere e di che diametro!
Ho fatto una cazzata ad iscrivermi ad Informatica?? ...può essere! Ma 
sinceramente vorrei provarci a dare l'esame, ho speso 1800 euro di tasse 
e bittar via sti soldi mi spiace....

 e bittar via sti soldi mi spiace....
Capisco, ti laureerai per poter dire agli altri di essere laureato.
Be', è uno degli scopi per i quali (purtroppo) ci si iscrive
all'università.
Ti faccio un in bocca al lupo per il futuro, perché ne hai bisogno.


 
Crepi!...e lo so di averne tanto bisogno..........