Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    33

    [c++]problema con fscanf

    ragazzi io ho :

    void newRecord(SOCKET m_socket,clientData &client)
    {
    fp=fopen("database.txt","r");
    while(fscanf(fp,"%d %s %s %s",&postoauto.i, &postoauto.cognome, &postoauto.nome, &postoauto.targa)!=-1 ){
    printf("%s %s %s","targa trovata", postoauto.targa , "cliente gia presente in parcheggio");}
    if(!strcmp(client.automobile, postoauto.targa)) {
    fp=fopen("database.txt","a+");
    fseek(fp,0, SEEK_END);
    int tmp=ftell(fp);
    if((tmp/52)<30){
    fwrite((char*)&client,sizeof(struct clientData),1,fp );
    cout<<"Il record # "<< (tmp/52) << "è stato inserito " << endl;
    cout<< client.firstName <<endl;
    cout<< client.lastName<<endl;
    cout<< client.automobile<<endl;
    int x;
    x=send(m_socket,(char*)&tmp, 8 , 0);
    fclose(fp);
    } else printf("non ci sono posti disponibili");
    } else {
    printf("%s %s %s %s %s ","Cliente", client.firstName, client.lastName, client.automobile, " gia presente in parcheggio");
    printf("il cliente sta uscendo dal parcheggio? Y/N");
    char ch;
    cin>>ch;
    if(ch=='y'){
    delete(client);
    printf("il cliente è uscito");
    };
    }
    fclose(fp);
    }
    praticamente devo vedere se il cliente è gia presente ma credo che il ciclo while e lo fscanf non fuzionino anche se mi compila il programma
    aiutatemi plz che sono messo malissimo

  2. #2
    Ciao!
    Non ne sono certo, ma fscanf restituisce SOLO "EOF" e non -1 quando ha finito di leggere... quindi prova a cambiare così:
    codice:
     while(fscanf(fp,"%d %s %s %s",&postoauto.i, &postoauto.cognome, &postoauto.nome, &postoauto.targa)!=EOF)

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    33
    nu... cosi mi fa un ciclo infinito...

  4. #4
    Ho usato di recente while((fscanf(fi,"%x %x %x\n",&a,&b,&F))!=EOF) e funziana perfettamente, quindi controlla che non ci siano altri errori nella funzione




    [edit] ho notato che io uso una coppia di parentesi in più.. prova a vedere se cambia qualcosa!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    33
    nada...

    http://phpfi.com/62189 qui c'è l'intero server della sockettcp help

  6. #6
    Nella scanf quando leggi una stringa non passare il valore per eference & . Solo i caqratteri e gli interi hanno bisogno dell'&

  7. #7

    Re: [c++]problema con fscanf

    Originariamente inviato da GokuZzZ
    ragazzi io ho :
    codice:
    void newRecord(SOCKET m_socket,clientData &client)
     {
       fp=fopen("database.txt","r");
       while(fscanf(fp,"%d %s %s %s",&postoauto.i, &postoauto.cognome, &postoauto.nome, &postoauto.targa)!=-1 ){
       printf("%s %s %s","targa trovata", postoauto.targa , "cliente gia presente in parcheggio");}
       if(!strcmp(client.automobile, postoauto.targa)) {
       fp=fopen("database.txt","a+");
       fseek(fp,0, SEEK_END);
       int tmp=ftell(fp);
       if((tmp/52)<30){
       fwrite((char*)&client,sizeof(struct clientData),1,fp );
       cout<<"Il record # "<< (tmp/52) << "è stato inserito " << endl;
       cout<< client.firstName <<endl;
       cout<< client.lastName<<endl;
       cout<< client.automobile<<endl;
       int x;
       x=send(m_socket,(char*)&tmp, 8 , 0);
       fclose(fp);
        } else printf("non ci sono posti disponibili");
        } else {
        printf("%s %s %s %s %s ","Cliente", client.firstName, client.lastName, client.automobile, " gia presente in parcheggio");
        printf("il cliente sta uscendo dal parcheggio? Y/N");
        char ch;
        cin>>ch;
        if(ch=='y'){
                  delete(client);
                  printf("il cliente è uscito");
                  };
        }
        fclose(fp);
        }
    praticamente devo vedere se il cliente è gia presente ma credo che il ciclo while e lo fscanf non fuzionino anche se mi compila il programma
    aiutatemi plz che sono messo malissimo
    mettendo tra [ CODE ] e [/ CODE] (senza spazi) il sorgente
    si mantiene l'indentazione ed e' piu' facile leggere..
    ora provo a vedere che cosa non va..

  8. #8

    Re: [c++]problema con fscanf

    codice:
    void newRecord(SOCKET m_socket,clientData &client)
     {
       fp=fopen("database.txt","r");
       while(fscanf(fp,"%d %s %s %s",&postoauto.i, &postoauto.cognome, &postoauto.nome, &postoauto.targa)!=EOF ){
       printf("%s %s %s","targa trovata", postoauto.targa , "cliente gia presente in parcheggio");}
       if(!strcmp(client.automobile, postoauto.targa)) {
       fp=fopen("database.txt","a+");
       fseek(fp,0, SEEK_END);
       int tmp=ftell(fp);
       if((tmp/52)<30){
       fwrite((char*)&client,sizeof(struct clientData),1,fp );
       cout<<"Il record # "<< (tmp/52) << "è stato inserito " << endl;
       cout<< client.firstName <<endl;
       cout<< client.lastName<<endl;
       cout<< client.automobile<<endl;
       int x;
       x=send(m_socket,(char*)&tmp, 8 , 0);
       fclose(fp);
        } else printf("non ci sono posti disponibili");
        } else {
        printf("%s %s %s %s %s ","Cliente", client.firstName, client.lastName, client.automobile, " gia presente in parcheggio");
        printf("il cliente sta uscendo dal parcheggio? Y/N");
        char ch;
        cin>>ch;
        if(ch=='y'){
                  delete(client);
                  printf("il cliente è uscito");
                  };
        }
        fclose(fp);
        }
    non passi postoauto
    poi, attento che la scanf("%s" restituisce la stringa finche non trova uno spazio, un tab o un \n,

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.