Ver Mensaje Individual
  #8 (permalink)  
Antiguo 10/06/2014, 09:34
manelmanel8
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Cifrado César

Estoy intentando hacerlo en un archivo i el archivo contiene lo siguiente.

abc
xyz
qert

Y imprime esto:

eFS5�

Código:
#include <stdio.h>
#include <string.h>

void codificarText(int, char[]);

int main(){
	int desplacament = 0;
	char original[50];

	printf("Desplaçament: ");
	scanf("%d", &desplacament);		
	printf("Nom fitxer orignal: ");
	scanf("%s", original);	
	
	codificarText(desplacament, original);
		
	
	return 0;
}

void codificarText(int desplacament, char original[]){	
	FILE *fitxer;
	int i = 0;
	char cadena[500], ch;
	if((fitxer = fopen(original, "r"))){
		//while(fscanf(fitxer,"%c", &cadena[i])!=EOF){
		while((ch = fgetc(fitxer)) != EOF){		
			cadena[i] = ch;
			if((cadena[i] + desplacament > 'z') || (cadena[i] + desplacament > 'Z'  && (cadena[i] + desplacament) < 'a' )){
				cadena[i] = cadena[i] + desplacament - 26;
				printf("%s", cadena);
			}else if((cadena[i] + desplacament > 'A' && cadena[i] + desplacament < 'Z') || (cadena[i] + desplacament > 'a' && cadena[i] + desplacament < 'z')){
				cadena[i] = cadena[i] + desplacament;
				printf("%s", cadena);
			}
			else{
				cadena[i] = cadena[i];
				printf("%s", cadena);
			}
			i++;
			fclose(fitxer);				
		}
	}else {
		printf("Error"); 
	}

}