Skip to content

Instantly share code, notes, and snippets.

@AlessandroSpallina
Last active August 29, 2015 14:14
Show Gist options
  • Save AlessandroSpallina/3209b0c66a58e860f512 to your computer and use it in GitHub Desktop.
Save AlessandroSpallina/3209b0c66a58e860f512 to your computer and use it in GitHub Desktop.
/*
***** FILTRO TIMBRATURA V1.0 *****
Alessandro Spallina
alessandrospallina1@gmail.com
http://aleksnote.altervista.org
Copyright 2015 Alessandro Spallina
Copyng: GPL 3+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Filtra l'output del sistema delle macchinette e appende il risultato filtrato.
FUNZIONI: - legge al più 39 char+'\0' e, dopo averli filtrati in base alla data li scrive sul file di output.
- secure controller: eliminato il problema della doppia stringa non intervallata da '\n'.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXRIGALEN 41
#define MAXSTRLEN 10
typedef struct s_elemento
{
char riga[MAXRIGALEN];
}t_elemento;
void errore(char *msg)
{
fprintf(stderr, "\n\n\aERRORE: %s\n\n", msg);
printf("\n");
system("pause");
exit(1);
}
void verifica_integrita_stringa(char *str)
{
int len;
len = strlen(str);
if (len != 8)
{
printf("-----------------------------------------------------------");
printf("\nATTENZIONE: %s non e' di 8 caratteri, ma di %d. Riprova", str, len);
fprintf(stderr, "\n\aERRORE: formato data non accettata.\n");
printf("-----------------------------------------------------------");
printf("\n");
system("pause");
exit(1);
}
}
int main(int argc, char *argv[])
{
FILE *fp = NULL, *fp2=NULL;
t_elemento elemento;
int numerogiorni = 0, occorrenza = 0;
char str1[MAXSTRLEN];
char str2[MAXSTRLEN] = "null";
char controllo;
if (argc == 1)
{
printf("\n ===========================");
printf("\n ! TIMBRATURA v1.0 !");
printf("\n ===========================");
printf("\n");
printf("\nInserisci quali giorni vuoi appendere nel file della timbratura.");
printf("\nInserisci i due giorni che intervallano il lasso di tempo desiderato.");
printf("\nInserisci una singola data per un solo giorno.");
printf("\nMetodo immissione: AAAAMMGG.");
printf("\n\nDigitare: ");
scanf("%s", str1);
verifica_integrita_stringa(str1);
numerogiorni++;
scanf("%c", &controllo);
if (controllo == ' ')
{
scanf("%s", str2);
verifica_integrita_stringa(str2);
numerogiorni++;
}
printf("\n-----\nSTR1: %s\nSTR2: %s\nNUMEROGIORNI: %d\n-----\n", str1, str2, numerogiorni);
if ((fp = fopen("c:/Windows/SysWOW64/output_ef.dat", "r")) == NULL)
errore("File di input OUTPUT_EF.dat non trovato");
if ((fp2 = fopen("c:/rilpre/SicRf.dat", "a+")) == NULL)
errore("File di output SICRF.dat NON TROVATO");
if (numerogiorni == 1)
{
while (fgets(elemento.riga, 40, fp) != NULL)
{
if (strncmp(elemento.riga, str1, 8) == 0)
{
printf("\n%s", elemento.riga);
fprintf(fp2, "\n%s", elemento.riga);
occorrenza++;
}
}
}
else
if (numerogiorni == 2)
{
while (fgets(elemento.riga, 40, fp) != NULL)
{
if (strncmp(str1, elemento.riga, 8) <= 0)
if (strncmp(str2, elemento.riga, 8) >= 0)
{
printf("\n%s", elemento.riga);
fprintf(fp2, "\n%s", elemento.riga);
occorrenza++;
}
}
}
if (occorrenza>0)
printf("\nTrovate n. %d occorrenze", occorrenza);
else printf("\n\aATTENZIONE: Non sono state trovate occorrenze");
fclose(fp);
fclose(fp2);
printf("\n\n***************** F I N I T O *****************\n");
printf("\n=================================================================================\n");
}
printf("\n");
system("pause");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment