PDA

Visualizza la versione completa : [C] Problema con le stringhe?


Cink
11-02-2013, 16:28
#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?

Marco1995
11-02-2013, 18:06
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?

Krahos
11-02-2013, 18:11
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.

Cink
11-02-2013, 18:33
Ok ti ringrazio, mi era proprio sfuggito! Quindi praticamente o le dichiaro globali oppure uso i puntatori

Krahos
11-02-2013, 21:34
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.

Loading