Last active
August 23, 2020 01:56
-
-
Save Edmartt/c179b8e81ed18a8d455e1705e4baa175 to your computer and use it in GitHub Desktop.
Cifrado de César sin caracteres extraños.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <string.h> | |
#include <stdlib.h> | |
#define MAX 100; | |
void cifrar(char*,int); | |
void mostrarMenu(); | |
int main(int argc, char **argv) | |
{ | |
int offset=0; | |
char word[500]; | |
char* ptrword=NULL; | |
printf("Ingrese la palabra a cifrar: "); | |
scanf("%s500",word); | |
ptrword=malloc(strlen(word)); | |
if(ptrword!=NULL) { | |
strcpy(ptrword,word); | |
printf("\nIngrese el desplazamiento de caracteres: "); | |
scanf("%d",&offset); | |
cifrar(ptrword,offset); | |
free(ptrword); | |
} else { | |
printf("\nNo hay suficiente memoria\n"); | |
free(ptrword); | |
return -1; | |
} | |
printf("\n"); | |
return 0; | |
} | |
void cifrar(char* cadena,int offset) | |
{ | |
int dif,car; | |
int len=strlen(cadena); | |
int asciiMay=65,asciiMin=97; | |
for(int i=0; i<len; i++) { | |
if(cadena[i]+offset>90 && cadena[i]<=96) { | |
dif=90-cadena[i]; | |
car=offset-dif; | |
cadena[i]=asciiMay+car-1; | |
} else if(cadena[i]+offset <=90) { | |
cadena[i]=cadena[i]+offset; | |
} else if(cadena[i]+offset>122) { | |
dif=122-cadena[i]; | |
car=offset-dif; | |
cadena[i]=asciiMin+car-1; | |
} else if(cadena[i]<=122) { | |
cadena[i]=cadena[i]+offset; | |
} | |
printf("%c ",cadena[i]); | |
} |
Así es. En el primer parámetro debes agregarle si o si, el 499, para dejar espacio para el caracter nulo :)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Creo que he entendido, aunque no estaba seguro.
Es decir, mi array tendría declarado 500 bytes, pero al leer la entrada es donde debo decirle que solo lo haga con 499. Esa es la parte que me confundía, estaba relacionando declararlo de ese tamaño con leerlo de ese tamaño. Bien aclaratorio, en caso de no estar yo entendiendo mal, claro está.