Skip to content

Instantly share code, notes, and snippets.

@Edmartt
Last active August 23, 2020 01:56
Show Gist options
  • Save Edmartt/c179b8e81ed18a8d455e1705e4baa175 to your computer and use it in GitHub Desktop.
Save Edmartt/c179b8e81ed18a8d455e1705e4baa175 to your computer and use it in GitHub Desktop.
Cifrado de César sin caracteres extraños.
#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]);
}
@MrDave1999
Copy link

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