Apertura chiusura file C

di il
1 risposte

Apertura chiusura file C

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//---------- Macro ----------//
#define N 5000
//--------- Prototipo --------//
void Key_Random(FILE *);
int Check_File(FILE *,FILE *,FILE *);
void Crypter(FILE *,FILE *,FILE *);
//--------- MAIN ------------//
int main()
{
    //--------- Dichiarazione---------//
    srand(time(0));
    FILE *key,*output,*input;
    int check=0;
    //--------- Chiamata funzioni---------//
    Key_Random(key);
    check=Check_File(key,input,output);
    Crypter(key,input,output);
    //--------- Controllo chiusura -------//
    if(check==404)
    {
        return 404;
    }
    fclose(key);
    fclose(input);
    fclose(output);



    return 0;
}
//-------- Funzioni --------//
void Key_Random(FILE *key)
{
    char reply;
    int key_random;
    //---------- Controllo key ----------//
    printf("Vuoi generare una chiave di %d caratteri Y/N : ",N);
    scanf("%c",&reply);
    if((reply=='n')||(reply=='N'))
    {
        return ;
    }
    //---------- Generatore key --------//
    key=fopen("key.txt","w");
    for(int i=0;i<N;i++)
    {
        key_random=rand()%94+34;
        fprintf(key,"%d\n",key_random);
    }
    printf("key.txt generato\n");
    fclose(key);
    return ;
}
int Check_File(FILE *key, FILE *input,FILE *output)
{
    //---------- Controlla se i file sono presenti ---------//
    if((key=fopen("key.txt","r"))==NULL)
    {
        printf("key.txt non trovato.");
        return 404;
    }
    if((input=fopen("input.txt","r"))==NULL)
    {
        printf("input.txt non trovato.");
        return 404;
    }
    input=fopen("output.txt","w");
    return 0;
}
void Crypter(FILE *key,FILE *input,FILE *output)
{
    //------ Imposta cursone a 0 ------//
    fseek(key,0,SEEK_SET);
    fseek(input,0,SEEK_SET);
    fseek(output,0,SEEK_SET);
    int key_x,input_x,i=0;
    //------- Criptatore -------//
    while(!feof(input))
    {
        fscanf(key,"%d",&key_x);
        fscanf(input,"%d",&input_x);
        if(((key_x+input_x)>126)&&((key_x-input_x)<32))
        {
            fprintf(output,"%c",input_x);
        }
        else
        {
            input_x=input_x+key_x;
            fprintf(output,"%c",input_x);
        }
        //-------- Spostamento cursore--------//
        fseek(key,i,SEEK_SET);
        fseek(input,i,SEEK_SET);
        fseek(output,i,SEEK_SET);
        i++;
    }
    printf("Testo cifrato.");
    return;
}
Sono riuscito a creare il file key.txt ma non riesco a creare l'output dell'input cifrato.
Il programma non da errori ma sicuramente ne avrò fatti tanti.
Se possibile vorrei anche sapere come mettere in una struttura FILE *input FILE *output.....
Devo aprire e chiudere ogni volta nella funzione suppongo... confermate ?

1 Risposte

  • Re: Apertura chiusura file C

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    //---------- Macro ----------//
    #define N 5000
    //--------- Prototipo --------//
    void Key_Random(FILE *);
    int Check_File(FILE *,FILE *,FILE *);
    void Crypter(FILE *,FILE *,FILE *);
    //--------- MAIN ------------//
    int main()
    {
        //--------- Dichiarazione---------//
        srand(time(0));
        FILE *key,*output,*input;
        int check=0;
        //--------- Chiamata funzioni---------//
        Key_Random(key);
        check=Check_File(key,input,output);
    
        //--------- Controllo chiusura -------//
        if(check==404)
        {
            return 404;
        }
        //--------- Chiamata funzioni---------//
        Crypter(key,input,output);
    
    
    
        return 0;
    }
    //-------- Funzioni --------//
    void Key_Random(FILE *key)
    {
        char reply;
        int key_random;
        //---------- Controllo key ----------//
        printf("Vuoi generare una chiave di %d caratteri Y/N : ",N);
        scanf("%c",&reply);
        if((reply=='n')||(reply=='N'))
        {
            return ;
        }
        //---------- Generatore key --------//
        key=fopen("key.txt","w");
        for(int i=0;i<N;i++)
        {
            key_random=rand()%94+34;
            fprintf(key,"%d\n",key_random);
        }
        printf("key.txt generato\n");
        fclose(key);
        return ;
    }
    int Check_File(FILE *key, FILE *input,FILE *output)
    {
        //---------- Controlla se i file sono presenti ---------//
        if((key=fopen("key.txt","r"))==NULL)
        {
            printf("key.txt non trovato.");
            return 404;
        }
        if((input=fopen("input.txt","r"))==NULL)
        {
            printf("input.txt non trovato.");
            return 404;
        }
        fclose(key);
        fclose(input);
        return 0;
    }
    void Crypter(FILE *key,FILE *input,FILE *output)
    {
        key=fopen("key.txt","r");
        input=fopen("input.txt","r");
        output=fopen("output.txt","w");
        //------ Imposta cursone a 0 ------//
        fseek(key,0,SEEK_SET);
        fseek(input,0,SEEK_SET);
        fseek(output,0,SEEK_SET);
        char key_x,input_x;
        //------- Criptatore -------//
        while(!feof(input))
        {
            fscanf(key,"%c",&key_x);
            fscanf(input,"%c",&input_x);
            if(((key_x+input_x)>126)&&((key_x-input_x)<32))
            {
                fprintf(output,"%c",input_x);
            }
            else
            {
                input_x=input_x+key_x;
                fprintf(output,"%c",input_x);
            }
        }
        fclose(key);
        fclose(input);
        fclose(output);
        printf("Testo cifrato.");
        return;
    }
    
    risolto
Devi accedere o registrarti per scrivere nel forum
1 risposte