Brasa
Utente Attivo
- Messaggi
- 192
- Reazioni
- 19
- Punteggio
- 38
Ciao a tutti,
ho da poco iniziato a programmare in C cose molto semplici, che però talvolta nemmeno riescono. Il programma in questione dovrebbe criptare e decriptare files.txt. Elenco ciò che dovrebbe fare:
-Chiede l'inserimento di una password (OK)
-Visualizza un menù dove si sceglie se criptare, decriptare o uscire. (OK)
-Una volta effettuata la scelta chiede di inserire il nome del file di input e poi il nome del file output(OK, forse...)
-Crea l'output criptato (nel caso della prima scelta o viceversa) (Ok solo quando elimino il passo precedente e inserisco input e output predefiniti)
-Elimina il file non criptato e lascia quello criptato
Nello spoiler il programma:
Vorrei che qualcuno mi illuminasse sul perchè quando aggiungo la parte di codice per inserire input e output dl file da criptare visualizza -Error! Cannot delete the file!- anche se il file input esiste. Sembra che nella parte in cui specifico -fopen("name", "r")- la parte -name- non viene sostituita dal nome inserito precedentemente. Potete aiutarmi?
P.S Pensavo di far corrispondere a ciascun carattere un numero di tre cifre, ma per decriptarlo come posso fare per far leggere tre numeri alla volta?
ES:
A = 123
B = 625
AB criptato sarebbe 123625
per decriptarlo come posso far leggere il numero spezzato in modo da poterlo trasformare nella parola originale? Con fscanf mi prende il numero per intero anche specificando %3d. :grat:
Probabilmente sbaglio tutto, quindi vi prego di avere pazienza con me :)
Grazie anticipatamente :party:
- - - Updated - - -
Risolto, avevo fatto un errore abbastanza stupido, nello spoiler il codice corretto ;)
Alla prossima :vv:
ho da poco iniziato a programmare in C cose molto semplici, che però talvolta nemmeno riescono. Il programma in questione dovrebbe criptare e decriptare files.txt. Elenco ciò che dovrebbe fare:
-Chiede l'inserimento di una password (OK)
-Visualizza un menù dove si sceglie se criptare, decriptare o uscire. (OK)
-Una volta effettuata la scelta chiede di inserire il nome del file di input e poi il nome del file output(OK, forse...)
-Crea l'output criptato (nel caso della prima scelta o viceversa) (Ok solo quando elimino il passo precedente e inserisco input e output predefiniti)
-Elimina il file non criptato e lascia quello criptato
Nello spoiler il programma:
Codice:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <windows.h>
unsigned int sleep(unsigned int seconds);
int main(){
int a;
int status;
int OK = 0;
int passw = 20111911;
int passw1;
char name[80];
char name1[80];
password:
printf("\nCheck-in: ");
scanf("%d", &passw1);
if (passw1 == passw){
menu:
printf("\tChoose\n");
printf("1)Cript\n2)Decript\n3)Exit\n");
scanf("%d", &a);
if(a == 1){
fflush(stdin);
printf("\nEnter file name input (.txt only): ");
gets(name);
fflush(stdin);
printf("\nEnter file name output (.txt only): ");
gets(name1);
FILE *fp, *fb;
char Ch;
fp=fopen("name","r");
fb=fopen("name1","w+");
while((Ch=fgetc(fp))!=EOF)
{
switch(Ch)
{
case 'A': fprintf(fb, "i"); break;
case 'B': fprintf(fb, "@"); break;
case 'C': fprintf(fb, "I"); break;
case 'D': fprintf(fb, ")"); break;
case 'E': fprintf(fb, "z"); break;
case 'F': fprintf(fb, "u"); break;
case 'G': fprintf(fb, "#"); break;
case 'H': fprintf(fb, "C"); break;
case 'I': fprintf(fb, "|"); break;
case 'J': fprintf(fb, "0"); break;
case 'K': fprintf(fb, "("); break;
case 'L': fprintf(fb, "!"); break;
case 'M': fprintf(fb, "4"); break;
case 'N': fprintf(fb, "&"); break;
case 'O': fprintf(fb, "1"); break;
case 'P': fprintf(fb, "Q"); break;
case 'Q': fprintf(fb, "t"); break;
case 'R': fprintf(fb, "8"); break;
case 'S': fprintf(fb, "K"); break;
case 'T': fprintf(fb, "2"); break;
case 'U': fprintf(fb, "*"); break;
case 'V': fprintf(fb, "<"); break;
case 'W': fprintf(fb, ">"); break;
case 'X': fprintf(fb, "_"); break;
case 'Y': fprintf(fb, "-"); break;
case 'Z': fprintf(fb, "]"); break;
case ' ': fprintf(fb, ":"); break;
case 'a': fprintf(fb, "9"); break;
case 'b': fprintf(fb, "P"); break;
case 'c': fprintf(fb, ";"); break;
case 'd': fprintf(fb, "^"); break;
case 'e': fprintf(fb, "."); break;
case 'f': fprintf(fb, "T"); break;
case 'g': fprintf(fb, " "); break;
case 'h': fprintf(fb, "Z"); break;
case 'i': fprintf(fb, "="); break;
case 'j': fprintf(fb, "7"); break;
case 'k': fprintf(fb, "F"); break;
case 'l': fprintf(fb, "3"); break;
case 'm': fprintf(fb, "Y"); break;
case 'n': fprintf(fb, "/"); break;
case 'o': fprintf(fb, "["); break;
case 'p': fprintf(fb, "w"); break;
case 'q': fprintf(fb, "H"); break;
case 'r': fprintf(fb, "$"); break;
case 's': fprintf(fb, "M"); break;
case 't': fprintf(fb, "6"); break;
case 'u': fprintf(fb, "N"); break;
case 'v': fprintf(fb, "S"); break;
case 'w': fprintf(fb, "+"); break;
case 'x': fprintf(fb, "5"); break;
case 'y': fprintf(fb, "?"); break;
case 'z': fprintf(fb, "m"); break;
case ':': fprintf(fb, "q"); break;
case '.': fprintf(fb, "o"); break;
case ',': fprintf(fb, "c"); break;
case ';': fprintf(fb, "l"); break;
case '-': fprintf(fb, "D"); break;
case '(': fprintf(fb, "x"); break;
case ')': fprintf(fb, "f"); break;
}
}
fclose(fp);
fclose(fb);
char file[] = "name";
status = remove(file);
if(status == 0){
printf("\nDone!");
}
else{
printf("\nError! Cannot delete the file!");
time_t ora;
ora = time(NULL);
FILE * fn;
fn = fopen("dump.txt", "w+");
fprintf(fn, "%s\nError 1:\nThe file %s cannot be deleted because it doesn't exist,\nit's opened or it's protected. ", asctime(localtime(&ora)), name);
fclose(fn);
}
}
else if(a == 2){
fflush(stdin);
printf("\nEnter file name input (.txt only): ");
gets(name1);
fflush(stdin);
printf("\nEnter file name output (.txt only: ");
gets(name);
FILE *fp, *fb;
int Chv;
fb=fopen("name","w+");
fp=fopen("name1","r");
while((Chv=fgetc(fp))!=EOF)
{
switch(Chv)
{
case 'i': fprintf(fb, "A"); break;
case '@': fprintf(fb, "B"); break;
case 'I': fprintf(fb, "C"); break;
case ')': fprintf(fb, "D"); break;
case 'z': fprintf(fb, "E"); break;
case 'u': fprintf(fb, "F"); break;
case '#': fprintf(fb, "G"); break;
case 'C': fprintf(fb, "H"); break;
case '|': fprintf(fb, "I"); break;
case '0': fprintf(fb, "J"); break;
case '(': fprintf(fb, "K"); break;
case '!': fprintf(fb, "L"); break;
case '4': fprintf(fb, "M"); break;
case '&': fprintf(fb, "N"); break;
case '1': fprintf(fb, "O"); break;
case 'Q': fprintf(fb, "P"); break;
case 't': fprintf(fb, "Q"); break;
case '8': fprintf(fb, "R"); break;
case 'K': fprintf(fb, "S"); break;
case '2': fprintf(fb, "T"); break;
case '*': fprintf(fb, "U"); break;
case '<': fprintf(fb, "V"); break;
case '>': fprintf(fb, "W"); break;
case '_': fprintf(fb, "X"); break;
case '-': fprintf(fb, "Y"); break;
case ']': fprintf(fb, "Z"); break;
case ':': fprintf(fb, " "); break;
case '9': fprintf(fb, "a"); break;
case 'P': fprintf(fb, "b"); break;
case ';': fprintf(fb, "c"); break;
case '^': fprintf(fb, "d"); break;
case '.': fprintf(fb, "e"); break;
case 'T': fprintf(fb, "f"); break;
case ' ': fprintf(fb, "g"); break;
case 'Z': fprintf(fb, "h"); break;
case '=': fprintf(fb, "i"); break;
case '7': fprintf(fb, "j"); break;
case 'F': fprintf(fb, "k"); break;
case '3': fprintf(fb, "l"); break;
case 'Y': fprintf(fb, "m"); break;
case '/': fprintf(fb, "n"); break;
case '[': fprintf(fb, "o"); break;
case 'w': fprintf(fb, "p"); break;
case 'H': fprintf(fb, "q"); break;
case '$': fprintf(fb, "r"); break;
case 'M': fprintf(fb, "s"); break;
case '6': fprintf(fb, "t"); break;
case 'N': fprintf(fb, "u"); break;
case 'S': fprintf(fb, "v"); break;
case '+': fprintf(fb, "w"); break;
case '5': fprintf(fb, "x"); break;
case '?': fprintf(fb, "y"); break;
case 'm': fprintf(fb, "z"); break;
case 'q': fprintf(fb, ":"); break;
case 'o': fprintf(fb, "."); break;
case 'c': fprintf(fb, ","); break;
case 'l': fprintf(fb, ";"); break;
case 'D': fprintf(fb, "-"); break;
case 'x': fprintf(fb, "("); break;
case 'f': fprintf(fb, ")"); break;
}
}
fclose(fp);
fclose(fb);
char file[] = "name1";
status = remove(file);
if(status == 0){
printf("\nDone!");
}
else{
printf("\nError! Cannot delete the file!");
time_t ora;
ora = time(NULL);
printf("%s", asctime(localtime(&ora)));
FILE * fo;
fo = fopen("dump.txt", "w+");
fprintf(fo, "%s\nError 1:\nThe file %s cannot be deleted because it doesn't exist,\nit's opened or it's protected. ", asctime(localtime(&ora)), name1);
fclose(fo);
}
}
else if(a == 3){
return OK;
}
else{
printf("\nInvalid input!\n");
goto menu;
}
}
else{
printf("\nInvalid password!");
goto password;
}
Sleep(3000);
return OK;
}
Vorrei che qualcuno mi illuminasse sul perchè quando aggiungo la parte di codice per inserire input e output dl file da criptare visualizza -Error! Cannot delete the file!- anche se il file input esiste. Sembra che nella parte in cui specifico -fopen("name", "r")- la parte -name- non viene sostituita dal nome inserito precedentemente. Potete aiutarmi?
P.S Pensavo di far corrispondere a ciascun carattere un numero di tre cifre, ma per decriptarlo come posso fare per far leggere tre numeri alla volta?
ES:
A = 123
B = 625
AB criptato sarebbe 123625
per decriptarlo come posso far leggere il numero spezzato in modo da poterlo trasformare nella parola originale? Con fscanf mi prende il numero per intero anche specificando %3d. :grat:
Probabilmente sbaglio tutto, quindi vi prego di avere pazienza con me :)
Grazie anticipatamente :party:
- - - Updated - - -
Risolto, avevo fatto un errore abbastanza stupido, nello spoiler il codice corretto ;)
Codice:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <windows.h>
unsigned int sleep(unsigned int seconds);
int main(int argc,char ** argv){
int a;
int status;
int OK = 0;
int passw = 20111911;
int passw1;
char name[80];
char name1[80];
password:
printf("\nCheck-in: ");
scanf("%d", &passw1);
if (passw1 == passw){
menu:
printf("\tChoose\n");
printf("1)Cript\n2)Decript\n3)Exit\n");
scanf("%d", &a);
if(a == 1){
fflush(stdin);
printf("\nEnter file name input (.txt only): ");
gets(name);
fflush(stdin);
printf("\nEnter file name output (.txt only): ");
gets(name1);
FILE *fp, *fb;
char Ch;
fp=fopen(name,"r"); /*Avevo messo le virgolette "name", non dovevo metterle*/
fb=fopen(name1,"w+"); /*Idem alla riga precedente*/
while((Ch=fgetc(fp))!=EOF)
{
switch(Ch)
{
case 'A': fprintf(fb, "i"); break;
case 'B': fprintf(fb, "@"); break;
case 'C': fprintf(fb, "I"); break;
case 'D': fprintf(fb, ")"); break;
case 'E': fprintf(fb, "z"); break;
case 'F': fprintf(fb, "u"); break;
case 'G': fprintf(fb, "#"); break;
case 'H': fprintf(fb, "C"); break;
case 'I': fprintf(fb, "|"); break;
case 'J': fprintf(fb, "0"); break;
case 'K': fprintf(fb, "("); break;
case 'L': fprintf(fb, "!"); break;
case 'M': fprintf(fb, "4"); break;
case 'N': fprintf(fb, "&"); break;
case 'O': fprintf(fb, "1"); break;
case 'P': fprintf(fb, "Q"); break;
case 'Q': fprintf(fb, "t"); break;
case 'R': fprintf(fb, "8"); break;
case 'S': fprintf(fb, "K"); break;
case 'T': fprintf(fb, "2"); break;
case 'U': fprintf(fb, "*"); break;
case 'V': fprintf(fb, "<"); break;
case 'W': fprintf(fb, ">"); break;
case 'X': fprintf(fb, "_"); break;
case 'Y': fprintf(fb, "-"); break;
case 'Z': fprintf(fb, "]"); break;
case ' ': fprintf(fb, ":"); break;
case 'a': fprintf(fb, "9"); break;
case 'b': fprintf(fb, "P"); break;
case 'c': fprintf(fb, ";"); break;
case 'd': fprintf(fb, "^"); break;
case 'e': fprintf(fb, "."); break;
case 'f': fprintf(fb, "T"); break;
case 'g': fprintf(fb, " "); break;
case 'h': fprintf(fb, "Z"); break;
case 'i': fprintf(fb, "="); break;
case 'j': fprintf(fb, "7"); break;
case 'k': fprintf(fb, "F"); break;
case 'l': fprintf(fb, "3"); break;
case 'm': fprintf(fb, "Y"); break;
case 'n': fprintf(fb, "/"); break;
case 'o': fprintf(fb, "["); break;
case 'p': fprintf(fb, "w"); break;
case 'q': fprintf(fb, "H"); break;
case 'r': fprintf(fb, "$"); break;
case 's': fprintf(fb, "M"); break;
case 't': fprintf(fb, "6"); break;
case 'u': fprintf(fb, "N"); break;
case 'v': fprintf(fb, "S"); break;
case 'w': fprintf(fb, "+"); break;
case 'x': fprintf(fb, "5"); break;
case 'y': fprintf(fb, "?"); break;
case 'z': fprintf(fb, "m"); break;
case ':': fprintf(fb, "q"); break;
case '.': fprintf(fb, "o"); break;
case ',': fprintf(fb, "c"); break;
case ';': fprintf(fb, "l"); break;
case '-': fprintf(fb, "D"); break;
case '(': fprintf(fb, "x"); break;
case ')': fprintf(fb, "f"); break;
}
}
fclose(fp);
fclose(fb);
status = remove(name); /*Tolto un pezzo di codice inutile, corretto e ora funziona*/
if(status == 0){
printf("\nDone!");
}
else{
printf("\nError! Cannot delete the file!");
time_t ora;
ora = time(NULL);
FILE * fn;
fn = fopen("dump.txt", "w+");
fprintf(fn, "%s\nError 1:\nThe file %s cannot be deleted because it doesn't exist,\nit's opened or it's protected. ", asctime(localtime(&ora)), name);
fclose(fn);
}
}
else if(a == 2){
fflush(stdin);
printf("\nEnter file name input (.txt only): ");
gets(name1);
fflush(stdin);
printf("\nEnter file name output (.txt only): ");
gets(name);
FILE *fp, *fb;
int Chv;
fb=fopen(name,"w+"); /*Idem*/
fp=fopen(name1,"r"); /*Idem*/
while((Chv=fgetc(fp))!=EOF)
{
switch(Chv)
{
case 'i': fprintf(fb, "A"); break;
case '@': fprintf(fb, "B"); break;
case 'I': fprintf(fb, "C"); break;
case ')': fprintf(fb, "D"); break;
case 'z': fprintf(fb, "E"); break;
case 'u': fprintf(fb, "F"); break;
case '#': fprintf(fb, "G"); break;
case 'C': fprintf(fb, "H"); break;
case '|': fprintf(fb, "I"); break;
case '0': fprintf(fb, "J"); break;
case '(': fprintf(fb, "K"); break;
case '!': fprintf(fb, "L"); break;
case '4': fprintf(fb, "M"); break;
case '&': fprintf(fb, "N"); break;
case '1': fprintf(fb, "O"); break;
case 'Q': fprintf(fb, "P"); break;
case 't': fprintf(fb, "Q"); break;
case '8': fprintf(fb, "R"); break;
case 'K': fprintf(fb, "S"); break;
case '2': fprintf(fb, "T"); break;
case '*': fprintf(fb, "U"); break;
case '<': fprintf(fb, "V"); break;
case '>': fprintf(fb, "W"); break;
case '_': fprintf(fb, "X"); break;
case '-': fprintf(fb, "Y"); break;
case ']': fprintf(fb, "Z"); break;
case ':': fprintf(fb, " "); break;
case '9': fprintf(fb, "a"); break;
case 'P': fprintf(fb, "b"); break;
case ';': fprintf(fb, "c"); break;
case '^': fprintf(fb, "d"); break;
case '.': fprintf(fb, "e"); break;
case 'T': fprintf(fb, "f"); break;
case ' ': fprintf(fb, "g"); break;
case 'Z': fprintf(fb, "h"); break;
case '=': fprintf(fb, "i"); break;
case '7': fprintf(fb, "j"); break;
case 'F': fprintf(fb, "k"); break;
case '3': fprintf(fb, "l"); break;
case 'Y': fprintf(fb, "m"); break;
case '/': fprintf(fb, "n"); break;
case '[': fprintf(fb, "o"); break;
case 'w': fprintf(fb, "p"); break;
case 'H': fprintf(fb, "q"); break;
case '$': fprintf(fb, "r"); break;
case 'M': fprintf(fb, "s"); break;
case '6': fprintf(fb, "t"); break;
case 'N': fprintf(fb, "u"); break;
case 'S': fprintf(fb, "v"); break;
case '+': fprintf(fb, "w"); break;
case '5': fprintf(fb, "x"); break;
case '?': fprintf(fb, "y"); break;
case 'm': fprintf(fb, "z"); break;
case 'q': fprintf(fb, ":"); break;
case 'o': fprintf(fb, "."); break;
case 'c': fprintf(fb, ","); break;
case 'l': fprintf(fb, ";"); break;
case 'D': fprintf(fb, "-"); break;
case 'x': fprintf(fb, "("); break;
case 'f': fprintf(fb, ")"); break;
}
}
fclose(fp);
fclose(fb);
status = remove(name1); /*Anche qui tolto il pezzo inutile e corretta la restante parte*/
if(status == 0){
printf("\nDone!");
}
else{
printf("\nError! Cannot delete the file!");
time_t ora;
ora = time(NULL);
FILE * fo;
fo = fopen("dump.txt", "w+");
fprintf(fo, "%s\nError 1:\nThe file %s cannot be deleted because it doesn't exist,\nit's opened or it's protected. ", asctime(localtime(&ora)), name1);
fclose(fo);
}
}
else if(a == 3){
return OK;
}
else{
printf("\nInvalid input!\n");
goto menu;
}
}
else{
printf("\nInvalid password!");
goto password;
}
Sleep(3000);
return OK;
}
Alla prossima :vv: