Oppure

Loading
08/02/10 10:48
wicca89
Salve ho questa traccia:
Sia dato un file testo biblioteca.txt. Le informazioni sono così strutturate: Il primo rigo contiene il nome di un libro e dal numero di n copie del libro possedute dalla biblioteca. Seguono esattamente n righe contenente il codice identificativo della posizione di ogni copia seguito dalla sua disponibilità al prestito. Scrivere una programma che dato in input un array di caratteri contenente il nome di un libro, stampi in output il codice di una qualisiasi copia disponibile o un messaggio di errore.

Esempio contenuto biblioteca.txt:
Analisi I
15000 NO
7658 SI

Geometria
9360 SI
782 SI

Programmare in c
6364 NO
11820 SI

Intelligenza artificiale
10933 NO
4563 NO
135 NO

Input:
"Programmare in c"
output:
Disponibile: Codice 11820

Input:
Intelligenza artificiale
output:
Non disponibile.

Io ho fatto questo:

#include <stdio.h>
#include <string.h>


int main () {
FILE *fp;
    char linea[256];
    char *divlinea, *space;
    char curremitt[256], maxemitt[256], maxtipo[256];
    char currspett, maxspett=0;
    char libro[256], forario;
    int spo=10;
    
    printf("Dammi il nome del tomo da cercare: ");
    gets(libro);
    
    fp=fopen("biblio.txt","r");
    
    if(fp!=NULL)    {
       while(fgets(linea, 256, fp)!=NULL) 
             if(strstr(linea,libro)!=NULL) {
                     printf("%s",linea);
                            fseek(fp,spo,SEEK_CUR);
                             fgets(linea, 256, fp);
                           divlinea = (strstr(linea, "SI"));
                             printf("%s",divlinea); 
                           }}
                         

        
    
   // else
     //   printf("Impossibile leggere il file\n"); 

fclose(fp);
system("PAUSE");
return 0;
            }


Mi stampa se ci sono i libri ma solo si senza in numero del codice cioè:
Input:
Geometria
Output:
Geometria
Si

Come faccio a fargli stampare anche il numero e anche se sono presenti altri tomi(per esempio Geometria ha 2 SI ma ne stampa uno solo).:ha:hail::hail:il::hail::hail:
Grazie
aaa
08/02/10 10:58
nessuno
Hai parlato di titolo e numero di copie ... ma non vedo il numero nell'esempio del file ...

E poi, perchè usi la fseek per spostare il puntatore di 10 caratteri? Cosa rappresentano questi 10 caratteri ?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/02/10 11:09
wicca89
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo
aaa
08/02/10 11:10
wicca89
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo
aaa
08/02/10 11:13
wicca89
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo
aaa
08/02/10 11:17
wicca89
Si praticamente dovrebbe stamparmi per esempio se scrivo geometria:
Geometria
9360 SI
782 SI

Dovrebbe stamparmi ank 9360 ma m stampa solo Si
Fseek invece l'ho usato per farti stampare si anche se non si trovano subito dopo il nome cercato. X farmi capire se scrivo Analisi I
Analisi I
15000 NO
7658 SI
Il si stà al secondo rigo se non uso fseek mi stampa (null) xk controlla solo il rigo "15000 NO" e ho messo 10 per stampare il si al secondo rigo
aaa
08/02/10 11:19
nessuno
Perchè rispondi 4 volte??

Non hai risposto alla mia domanda ... parlavi di un numero di libri oltre al titolo ma questo numero non c'e' nell'esempio ... vuoi chiarire?

L'uso della fseek in quel modo è assurdo ... chi ti dice che siano sempre 10 caratteri? Anzi, la fseek non va proprio usata ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/02/10 11:27
wicca89
Non lo so perchè ha risposto 4 volte io ho scritto solo una volta.
Cmq questa è una traccia di un'esame e ho copiato esattamente quello ke c'è scritto non so che dire...tralasciando la riga del numero di copie come lo concludo?
fseek ho provato ad usarlo perchè solo in questo modo che ho provato per non farmi stampare null se sapevo come completare l'esercizio non avrei aperto il post.
aaa