Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con le stringhe?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    char nomi[3][20];
    char cognomi[3][20];
    int ferie[3];
    int mala[3];
    void modifica();
    void stampa();
    int cerca(char app[20]);
    int n=2;
    int main()
    { int scelta;
      int i=0;
    
        do{
            fflush(stdin);
          gets(nomi[i]);
    
          scanf("%d",&ferie[i]);
          scanf("%d",&mala[i]);
          i++;
           }while(i<n);
    
        do{ puts(" Benvenuti in Vettori ParaparaTunz \n (1) Visualizza elenco dipendenti \n (2) Aggiungi ferie \n (0) Esci");
            scanf("%d",&scelta);
            switch(scelta)
             { case 1: stampa(); break;
               case 2: modifica();
             }
    
    
           } while(scelta!=0);
    }
    
    void stampa()
    { int i=0;
    
        do{
            puts(nomi[i]);
            printf("%d \n",ferie[i]);
            printf("%d \n",mala[i]);
            i++;
         }while(i<n);
    
    }
    
    void modifica()
    { char app[20];
      int indice;
      int giorni;
      int risultato;
      char tipo;
    
        fflush(stdin);
        puts("Inserisci nome");
        gets(app);
    
        puts("Inserisci giorni permesso");
        scanf("%d",&giorni);
    
        puts("Inserisci tipo");
         fflush(stdin);
        scanf("%c",&tipo);
        puts("1");
        indice=cerca(app[20]);
         puts("2");
          if (indice==-1)
            puts("aaaa");
           if(tipo=='m')
             mala[indice]=mala[indice]+giorni;
            else if (tipo=='f')
             ferie[indice]=ferie[indice]+giorni;
    
    
    }
    int cerca(char app[20])
    { int i=0, indice=-1; char ciao[20];
        puts("3");
        do { puts("para"); gets(ciao);puts(ciao);puts(app); puts(nomi[i]);
            if (strcmp(app,nomi[i])==0)
            {
                indice=i;
                puts("hohio");
            }
    
            i++;
             puts("5");
          }while(strcmp(app,nomi[i])!=0 && i<n);
     puts("4");
     return indice;
    
    
    }
    Partendo dal fatto che all'inizio ho messo l'inserimento di un nome e due numeri senza nessun messaggio d'avvertimento.

    Sinceramente non so se funziona il programma, quello che mi interessa è un altro problema, quando durante la sua esecuzione, arrivo nel ciclo subito dopo il puts("3") mi da errori con le stringhe, ovviamente inizialmente il programma non era così, ho aggiunto varie cose inutili per capire il problema e non mi fa neanche un semplice gets che il programma si blocca... cosa ho sbagliato?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Partendo dal fatto che all'inizio ho messo l'inserimento di un nome e due numeri senza nessun messaggio d'avvertimento. Sinceramente non so se funziona il programma, quello che mi interessa è un altro problema, quando durante la sua esecuzione, arrivo nel ciclo subito dopo il puts("3") mi da errori con le stringhe, ovviamente inizialmente il programma non era così, ho aggiunto varie cose inutili per capire il problema e non mi fa neanche un semplice gets che il programma si blocca... cosa ho sbagliato?
    ..non riesco a capire qual'è il tuo problema...all'interno di quale funzione?In che senso ti da errori sulle stringhe?E sopratutto cosa vuoi fare col programma?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    18
    L'errore che hai fatto è passare by value un vettore a una funzione. Questo in C non è permesso anche se il compilatore non ti da errore. I vettori si passano alle funzioni by reference tramite i puntatori. Ti consiglio di ripassare i vettori e i puntatori e capirai da solo come rimediare.

  4. #4
    Ok ti ringrazio, mi era proprio sfuggito! Quindi praticamente o le dichiaro globali oppure uso i puntatori

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    18
    Si esatto. Ti consiglio di usare/imparare bene i puntatori però, che sono praticamente la base del C. Le variabili globali vanno usate quando proprio non se ne può fare a meno.

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.