Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - comparazione stringhe...
Forum - C/C++ - comparazione stringhe... - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 18:02
Venerdì, 20/02/2009
scusami ancora ma a me questa funzione non va..tu xcaso hai provato??..a me non prende l'input...bah?!8-|8-|8-|...comunque grazie ancora..

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:17
Venerdì, 20/02/2009
Se mi dici che "non va" non posso farci molto ...

Invece, se mostri il codice posso dirti dove sbagli ...

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 10:53
Sabato, 21/02/2009
Scusami, è vero...comunque il codice è il seguente:

void leggi_da_file_inserimento(DatabaseClienti *dat)
{
    FILE *file_clienti1,
         *file_clienti2,
         *file_clienti3,
         *file_clienti4,
         *file_clienti5,
         *file_clienti6,
         *file_clienti7,
         *file_clienti8,
         *file_clienti9,
         *file_clienti10;
    dat->nome_cognomeClienti = 0;   /* variabile di tipo puntatore a struttura inizializzata a zero */
    int chiavi_lette;
    char nome_cognome[10],
         nome[10],
         cognome[10],
         stringa[10000];

        file_clienti1 = fopen("cliente1.txt", "r");
        file_clienti2 = fopen("cliente2.txt", "r");
        file_clienti3 = fopen("cliente3.txt", "r");
        file_clienti4 = fopen("cliente4.txt", "r");
        file_clienti5 = fopen("cliente5.txt", "r");
        file_clienti6 = fopen("cliente6.txt", "r");
        file_clienti7 = fopen("cliente7.txt", "r");

        if(file_clienti1 == NULL)
        {
            file_clienti1 = fopen("cliente1.txt", "w");

            printf("\n NOME: ");
            scanf("%s", nome);
            printf("\n COGNOME: ");
            scanf("%s", cognome);
            printf("\n SCHEDA: \n");
            fgets(*stringa, 10000, stdin);

            fprintf(file_clienti1, " NOME: %5s\n", nome);
            fprintf(file_clienti1, " COGNOME: %5s\n", cognome);
            fprintf(file_clienti1, " SCHEDA: %s\n", stringa);

        }
        else if(file_clienti2 == NULL)
        {
            file_clienti2 = fopen("cliente2.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti2, "nome: %5s\n", nome);
            fprintf(file_clienti2, "cognome: %5s\n", cognome);
        }
        else if(file_clienti3 == NULL)
        {
            file_clienti3 = fopen("cliente3.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti3, "nome: %5s\n", nome);
            fprintf(file_clienti3, "cognome: %5s\n", cognome);
        }
        else if(file_clienti4 == NULL)
        {
            file_clienti4 = fopen("cliente4.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti4, "nome: %5s\n", nome);
            fprintf(file_clienti4, "cognome: %5s\n", cognome);
        }
        else if(file_clienti5 == NULL)
        {
            file_clienti5 = fopen("cliente5.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti5, "nome: %5s\n", nome);
            fprintf(file_clienti5, "cognome: %5s\n", cognome);
        }
        else if(file_clienti6 == NULL)
        {
            file_clienti6 = fopen("cliente6.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti6, "nome: %5s\n", nome);
            fprintf(file_clienti6, "cognome: %5s\n", cognome);
        }
        else if(file_clienti7 == NULL)
        {
            file_clienti7 = fopen("cliente7.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti7, "nome: %5s\n", nome);
            fprintf(file_clienti7, "cognome: %5s\n", cognome);
        }
        else
        {
            printf("\n Database pieno:\n");
            printf("\n Memoria insufficiente per memorizzare altri clienti!\n");
        }

    /* chiudi i file */
    fclose(file_clienti1);
    fclose(file_clienti2);
    fclose(file_clienti3);
    fclose(file_clienti4);
    fclose(file_clienti5);
    fclose(file_clienti6);
    fclose(file_clienti7);

}
Dov'è il èproblema??..non legge l'input scheda. Il programma termina senza inserire l'input...grazie...8-|

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:23
Sabato, 21/02/2009
Perche' hai scritto

fgets(*stringa, 10000, stdin);

??? Ti avevo detto

fgets(stringa, 10000, stdin);

perche' il primo parametro deve essere il puntatore e stringa e' gia' il puntatore ...

P.S. Quando posti il codice, deve essere completo, ordinato e compilabile.

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 11:29
Sabato, 21/02/2009
Allora mi scusa ancora una volta, ma il programma non va uguale..:d..

/*****************************/
/* inclusione delle librerie */
/*****************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/******************************/
/* definizioni delle costanti */
/******************************/
#define MAX_CLIENTI 10 /* numero massimo di clienti */

typedef struct
{
    char nome[10],
         cognome[10],
         scheda[10],
         campo_nome[10],
         campo_cognome[10],
         campo_scheda[10000];

} Database;


typedef struct
{
    Database vett_clienti[MAX_CLIENTI];
    int nome_cognomeClienti;

} DatabaseClienti;


void leggi_da_file_inserimento(DatabaseClienti *dat);
void leggi_da_file(DatabaseClienti *dat);
int main()
{
    char nome_cognome[10],
         nome[10],
         cognome[10];
    int n;
    DatabaseClienti database;  /* variabile database di tipo struttura */
    FILE *file_clienti1,
         *file_clienti2,
         *file_clienti3,
         *file_clienti4,
         *file_clienti5,
         *file_clienti6,
         *file_clienti7,
         *file_clienti8,
         *file_clienti9,
         *file_clienti10;


    printf("\n                - MENU' DI SCELTA -\n");
    printf("\n  [1] Ricerca");
    printf("\n  [2] Inserimento\n");
    printf("\n  Inserire il numero presente in parentesi per selezionare: ");
    scanf("%d", &n);
    int leggi_interno_file;

    if(n == 1)
     leggi_da_file(&database);

    else if(n == 2)
      leggi_da_file_inserimento(&database);

    return 0;
}

/* definizione della funzione per leggere da file */
void leggi_da_file_inserimento(DatabaseClienti *dat)
{
    FILE *file_clienti1,
         *file_clienti2,
         *file_clienti3,
         *file_clienti4,
         *file_clienti5,
         *file_clienti6,
         *file_clienti7,
         *file_clienti8,
         *file_clienti9,
         *file_clienti10;
    dat->nome_cognomeClienti = 0;   /* variabile di tipo puntatore a struttura inizializzata a zero */
    int chiavi_lette;
    char nome_cognome[10],
         nome[10],
         cognome[10],
         stringa[10000];

        file_clienti1 = fopen("cliente1.txt", "r");
        file_clienti2 = fopen("cliente2.txt", "r");
        file_clienti3 = fopen("cliente3.txt", "r");
        file_clienti4 = fopen("cliente4.txt", "r");
        file_clienti5 = fopen("cliente5.txt", "r");
        file_clienti6 = fopen("cliente6.txt", "r");
        file_clienti7 = fopen("cliente7.txt", "r");

        if(file_clienti1 == NULL)
        {
            file_clienti1 = fopen("cliente1.txt", "w");

            printf("\n NOME: ");
            scanf("%s", nome);
            printf("\n COGNOME: ");
            scanf("%s", cognome);
            printf("\n SCHEDA: \n");
            fgets(stringa, 10000, stdin);

            fprintf(file_clienti1, " NOME: %5s\n", nome);
            fprintf(file_clienti1, " COGNOME: %5s\n", cognome);
            fprintf(file_clienti1, " SCHEDA: %s\n", stringa);

        }
        else if(file_clienti2 == NULL)
        {
            file_clienti2 = fopen("cliente2.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti2, "nome: %5s\n", nome);
            fprintf(file_clienti2, "cognome: %5s\n", cognome);
        }
        else if(file_clienti3 == NULL)
        {
            file_clienti3 = fopen("cliente3.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti3, "nome: %5s\n", nome);
            fprintf(file_clienti3, "cognome: %5s\n", cognome);
        }
        else if(file_clienti4 == NULL)
        {
            file_clienti4 = fopen("cliente4.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti4, "nome: %5s\n", nome);
            fprintf(file_clienti4, "cognome: %5s\n", cognome);
        }
        else if(file_clienti5 == NULL)
        {
            file_clienti5 = fopen("cliente5.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti5, "nome: %5s\n", nome);
            fprintf(file_clienti5, "cognome: %5s\n", cognome);
        }
        else if(file_clienti6 == NULL)
        {
            file_clienti6 = fopen("cliente6.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti6, "nome: %5s\n", nome);
            fprintf(file_clienti6, "cognome: %5s\n", cognome);
        }
        else if(file_clienti7 == NULL)
        {
            file_clienti7 = fopen("cliente7.txt", "w");

            printf("\nnome: ");
            scanf("%s", nome);
            printf("\ncognome: ");
            scanf("%s", cognome);

            fprintf(file_clienti7, "nome: %5s\n", nome);
            fprintf(file_clienti7, "cognome: %5s\n", cognome);
        }
        else
        {
            printf("\n Database pieno:\n");
            printf("\n Memoria insufficiente per memorizzare altri clienti!\n");
        }

    /* chiudi i file */
    fclose(file_clienti1);
    fclose(file_clienti2);
    fclose(file_clienti3);
    fclose(file_clienti4);
    fclose(file_clienti5);
    fclose(file_clienti6);
    fclose(file_clienti7);

}


/* definizione della funzione per leggere da file */
void leggi_da_file(DatabaseClienti *dat)
{
    FILE *file_clienti1,
         *file_clienti2,
         *file_clienti3,
         *file_clienti4,
         *file_clienti5,
         *file_clienti6,
         *file_clienti7;
    dat->nome_cognomeClienti = 0;   /* variabile di tipo puntatore a struttura inizializzata a zero */
    char nome_cognome[10], modifica;
    int cont, chiavi_lette, i;

        file_clienti1 = fopen("cliente1.txt", "r");
        file_clienti2 = fopen("cliente2.txt", "r");
        file_clienti3 = fopen("cliente3.txt", "r");
        file_clienti4 = fopen("cliente4.txt", "r");
        file_clienti5 = fopen("cliente5.txt", "r");
        file_clienti6 = fopen("cliente6.txt", "r");
        file_clienti7 = fopen("cliente7.txt", "r");

        printf("\n Inserire il nome/cognome da cercare: ");
        scanf("%s", nome_cognome);

       if(file_clienti1 != NULL){
           fscanf(file_clienti1,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente1.txt: Nome o cognome presente");
                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);

                /*  printf("\n Vuoi modificare il documento? [Y/N]\n");
                  scanf("%c", &modifica);
                  if(modifica == 'Y' ||
                     modifica == 'y')
                     {
                  */
              }
              else
                printf("\n cliente1.txt: Nome o cognome non presente");
       }

       if(file_clienti2 != NULL){
           fscanf(file_clienti2,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente2.txt: Nome o cognome presente");

                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);
              }
              else
                printf("\n cliente2.txt: Nome o cognome non presente");
       }

       if(file_clienti3 != NULL){
           fscanf(file_clienti3,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente3.txt: Nome o cognome presente");

                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);
              }
              else
                printf("\n cliente3.txt: Nome o cognome non presente");
       }

       if(file_clienti4 != NULL){
           fscanf(file_clienti4,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente4.txt: Nome o cognome presente");

                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);
              }
              else
                printf("\n cliente4.txt: Nome o cognome non presente");
       }

       if(file_clienti5 != NULL){
           fscanf(file_clienti5,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente5.txt: Nome o cognome presente");

                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);
              }
              else
                printf("\n cliente5.txt: Nome o cognome non presente");
       }

       if(file_clienti6 != NULL){
           fscanf(file_clienti6,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente6.txt: Nome o cognome presente");

                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);
              }
              else
                printf("\n cliente6.txt: Nome o cognome non presente");
       }

       if(file_clienti7 != NULL){
           fscanf(file_clienti7,"%s %s %s %s", dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                               dat->vett_clienti[dat->nome_cognomeClienti].cognome);

           if(strcmp(dat->vett_clienti[dat->nome_cognomeClienti].nome, nome_cognome)    == 0 ||
              strcmp(dat->vett_clienti[dat->nome_cognomeClienti].cognome, nome_cognome) == 0)
              {
                  printf("\n cliente7.txt: Nome o cognome presente");

                  printf(" \n %s: %s\n %s: %s\n",dat->vett_clienti[dat->nome_cognomeClienti].campo_nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].nome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].campo_cognome,
                                                 dat->vett_clienti[dat->nome_cognomeClienti].cognome);
              }
              else
                printf("\n cliente7.txt: Nome o cognome non presente");
       }

       else if(file_clienti1  == NULL &&
               file_clienti2  == NULL &&
               file_clienti3  == NULL &&
               file_clienti4  == NULL &&
               file_clienti5  == NULL &&
               file_clienti6  == NULL &&
               file_clienti7  == NULL)
                 printf("\n Database vuoto\n");


      fclose(file_clienti1);
      fclose(file_clienti2);
      fclose(file_clienti3);
      fclose(file_clienti4);
      fclose(file_clienti5);
      fclose(file_clienti6);
      fclose(file_clienti7);

}

PS.grazie soprattutto per la pazienza...







PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:40
Sabato, 21/02/2009
E insisti con "non va" ...

NON VA NON PERMETTE DI CAPIRE IL PROBLEMA ...

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 11:42
Sabato, 21/02/2009
scusa, ma il problema l'ho già detto, non prende l'input "scheda"..è sempre questo il problema!!ma scusa compilandolo non ti sei accorto di ciò??..comunque ti ripeto quando devo prendere l'input scheda, il programma termina..sono stato chiaro????...grazie...

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:48
Sabato, 21/02/2009
Testo quotato

Postato originariamente da giocala88:

scusa, ma il problema l'ho già detto, non prende l'input "scheda"..è sempre questo il problema!!ma scusa compilandolo non ti sei accorto di ciò??..comunque ti ripeto quando devo prendere l'input scheda, il programma termina..sono stato chiaro????...grazie...



Intanto quando COMPILI non ti accorgi di un bel niente perche' non ci sono errori IN COMPILAZIONE (fai attenzione, la COMPILAZIONE e' una cosa e l'ESECUZIONE del programma sono cose diverse. Tu hai un errore in ESECUZIONE non in COMPILAZIONE).

L'input di scheda avviene REGOLARMENTE (a parte il fatto che non capisco perche' imposti nome e cognome con appena 10 caratteri) e te ne puoi accorgere se VISUALIZZI scheda (che poi chiami stringa, che confusione ...) SUBITO dopo la fgets.

Il problema che hai e' SICURAMENTE DOPO, ma dato che NON si capisce assolutamente quello che vuoi fare perche' ci sono decine di file aperti (senza motivo) e codice di cui NON si capisce l'utilita', si deve capire DOVE hai il problema che lamenti.

Il consiglio e' di eseguire PASSO PASSO in DEBUG, linea dopo linea il programma e capire IN QUALE LINEA DOPO la fgets il programma ha problemi ...

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo