PDA

Visualizza la versione completa : Protocollo in C


Pisno123
06-06-2016, 10:05
Ciao ragazzi,
spero almeno questa volta di non aver sbagliato posto su cui postare il mio problema.
Devo fare un programma in C che registra protocolli e li salva su un file.
Successivamente deve leggere dal file quello che ho scritto in precedenza.
Quindi il programma deve leggere le cose che ho scritto anche ieri!
Ho un po' di problemi per farlo.
Comunque sia ci ho provato e lo ho implementato secondo le mie capacità.
Spero mi possiate aiutare.
Questo è il codice:


//questo è un lavoro di lorenzo pisanò
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main()
{
int voci=1000,anno[4],scelta=0,n=0,presente=0,i,vero=0,volevi,j;
char cliente[10],entrata[10],tipo[20],riga[400],protocollo[1000][3],scrivi,leggi,numero[1000];
FILE *scrivere;
FILE *leggere;
FILE *puntascrivere;
FILE *puntaleggere;

puntascrivere=fopen("leggere.txt", "w");
if(puntascrivere)
{
do
{
printf("/nInserisci:");
printf("1) Aggiungi un nuovo protocollo\n") ;
printf("2) Ricerca esatta \n") ;
printf("3) Stampa completa \n") ;
printf("0) Esci dal programma\n") ;

printf("Che comando desideri usare?: ") ;
gets(riga);
scelta=atoi(riga);


switch (scelta)
{
case 0:

fclose(puntascrivere);
fclose(puntaleggere);
printf("Ciao!");
return 0;

break;
case 1:

puntaleggere=fopen("scrivi.txt", "w");

printf("Inserisci il numero di protocollo: \n") ;
gets(tipo);
fputs(tipo,puntascrivere);
printf("Inserisci se è un Entrata o un Uscita: \n") ;
gets(entrata);
fputs(entrata,puntascrivere);
printf("Inserisci se è un Cliente o un Fornitore: \n") ;
gets(cliente);
fputs(cliente,puntascrivere);
printf("Inserisci l'anno: \n") ;
scanf("%d",&anno);
fputc((int)'\t',puntascrivere);
for(i=0;i<n;i++)
{
printf("Il numero di protocollo e': %d\n",numero[i]);
}


if(n==voci)
{
puts("Il file non può più contenere nessun dato!");
}

for (i=0;i<n;i++)
for(j=0;j<3;j++)
{
if (strcmp(tipo,protocollo[i]) == 0 )
presente = 1 ;
if ( presente == 1 )
{
puts("Il numero di protocollo da lei inserito e' gia' stato registrato");
break ;
}


n++ ;
break ;
}
break;
case 2:



printf("1)cerca in base al tipo di protocollo: \n");
printf("2)cerca in base a Entrata o Uscita: \n");
printf("3)cerca in base al Cliente o Fornitore: \n");
printf("4)cerca in base all'anno: \n");

printf("Che comando desideri usare?: ") ;
scanf("%d",&volevi);

if(volevi==1)
{
printf("Tipo del protocollo: ");
gets(tipo);
for (i=0;i<n&&vero==0;i++)
{
if ( strcmp(tipo,protocollo[i])==0)
{
vero=1;
scelta=i;
}
}
if (vero==1)
{
printf(" %s\n %s\n %s\n %d\n",tipo[i],entrata[i],cliente[i],anno[i]);
}
}
else
{
printf("Impossibile trovare il protocollo cercato") ;
}
if(volevi==2)
{
printf("Entrata o uscita: %c");
gets(entrata);
}
if(volevi==3)
{
printf("Cliente o Fornitore: %c");
gets(cliente);
}
if(volevi==4)
{
printf("Anno: %d");
scanf("%d",&anno);
}
break;
case 3:

if(n==0)
{
printf("non ci sono protocolli all'interno del file!");
}
for(i=0;i<n;i++)
{
printf("\n");
printf("\ntipo di protocollo: %d",tipo[i]);
printf("\nentrata: %d",entrata[i]);
printf("\ncliente: %d",cliente[i]);
printf("\nanno: %d",anno[i]);
printf("\nnumero di protocollo: %d",numero[i]);
printf("\n");
}
break;
}
break;
} while (scelta!=0);
}
else
{
return 0;
}
}

oregon
06-06-2016, 10:10
Spero mi possiate aiutare.

Ma la richiesta specifica qual è?

Pisno123
06-06-2016, 10:26
Non mi si aprono i file, cioè non mi scrive ne legge sui file. Volevo sapere se siete in grado di dirmi cosa ho sbagliato dato che a me sembra tutto giusto. Insomma il file "scrivere" deve contenere cioè che l'utente scrive nel programma. Poi deve leggere e stampare a video tutto ciò che contiene il file. Quindi deve anche registrare

oregon
06-06-2016, 10:42
Non mi si aprono i file, cioè non mi scrive ne legge sui file. Volevo sapere se siete in grado di dirmi cosa ho sbagliato dato che a me sembra tutto giusto. Insomma il file "scrivere" deve contenere cioè che l'utente scrive nel programma. Poi deve leggere e stampare a video tutto ciò che contiene il file. Quindi deve anche registrare

Ma perché utilizzi due file diversi? E con quei nomi?

Utilizza un solo file e chiamalo "dati.txt" in cui scriverai e da cui leggerai.

Pisno123
06-06-2016, 10:45
ok va bene mi puoi far vedere sul mio programma perchè non mi si apre e non mi funziona? Facciamo finta che uso solo un file chiamato dati.txt come dici tu. Please aiutami sono tiltato ahahah, sono all'incirca 3 ore su questo programma

Loading