Support Forums

Full Version: Rot13 in C
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
huzzah
Code:
#include <stdio.h>

char rotateChar(int oldChar);
void encryptString(char *str);
void encryptFile(FILE *fp, char *name);

int main(int argc, char *argv[]) {

if(argc < 2) {
  printf("fudge you.\n");
  return 0;
}

FILE *fp = fopen(argv[1], "r");

if(fp == 0) {
  //printf("Couldn't open file for reading\n");
  encryptString(argv[1]);
  return 0;
} else {
  encryptFile(fp, argv[1]);
  return 0;
}

}

void encryptFile(FILE *fp, char *name) {
char writeFp[strlen(name) + 1];
sprintf(writeFp, "_%s", name);

FILE *encFile = fopen(writeFp, "w");

if(encFile == 0) {
  printf("couldn't open file for writing.\n");
  return 0;
}

char fpChar = fgetc(fp);
char newChar;
while(fpChar != EOF) {
  //printf("%c",fpChar);
  newChar = rotateChar(fpChar);
  fputc(newChar, encFile);
  fpChar = fgetc(fp);
}

fclose(fp);

printf("New File is called: %s\n", writeFp);
}

void encryptString(char *str) {
int i;
for(i = 0; i < strlen(str); i++) {
  int charAsInt = (int)str[i];
  char newChar = rotateChar(charAsInt);
  str[i] = newChar;
}

printf("%s\n",str);
}

char rotateChar(int oldChar) {

if(oldChar >= 'A' && oldChar <= 'Z') {
  oldChar += 13;
  if(oldChar > 'Z') oldChar -= 26;
} else if(oldChar >= 'a' && oldChar <= 'z') {
  oldChar += 13;
  if(oldChar > 'z') oldChar -= 26;
}

return (char)oldChar;

}

/*
[Massey@Massey C]$ ./FileIO hello
uryyb
[Massey@Massey C]$ echo "hi, han" > no.txt
[Massey@Massey C]$ ./FileIO no.txt
hi, han
[Massey@Massey C]$ cat _no.txt
uv, una
[Massey@Massey C]$
*/

www.thingthatimade.blogspot.com
What was your purpose .... explain me