Advertisement
Guest User

Untitled

a guest
May 12th, 2016
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Füge hier die Header hinzu
  3.  * schau dir dafür die man pages an.
  4.  */
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <stdlib.h>
  8. #include <unistd.h>
  9. #include <stdint.h>
  10. #include <fcntl.h>
  11. #include <errno.h>
  12. #include <sys/types.h>
  13. /*
  14.  * Dies ist ein mögliches Grundgerüst für eine
  15.  * Funktion die etwas rot13 rotiertes ausgiebt.
  16.  * Vergiss nicht, C strings müssen '\0' (Null) terminiert
  17.  * sein, wenn du Sie mit printf ausgeben willst!
  18.  *
  19.  * !Du musst diese Methode aber nicht nutzen.!
  20.  *
  21.  * Beachte nur Buchstaben, keine Sonderzeichen.
  22.  * Der Modulo operator könnte von Hilfe sein ;)
  23.  */
  24.  
  25. int print_rot13(int fd){
  26.     ssize_t i, length;
  27.     char letter;
  28.  
  29.     while (1){
  30.         length = read(fd,&letter,1);
  31.         if (length == 0){break;}
  32.         if (length <0){return errno;}
  33.             if (letter >= 65 && letter <= 90){
  34.                 letter = (letter - 65 + 13) % 26 + 65;
  35.                 printf("%c", letter);
  36.                 }
  37.             else if (letter >= 97 && letter <= 122){
  38.                 letter = (letter - 97 + 13) % 26 + 97;
  39.                 printf("%c", letter);
  40.                 }
  41.     }
  42.     return 0;
  43. }
  44. //Hier noch bitte
  45. void print_error(char* program, char* msg, int errnum){
  46.     char *error = strerror(errnum);
  47.     printf("%s: %s: %s\n", program, msg, error);
  48. }
  49.  
  50. int main(int argc, char* argv[]){
  51.     int fd, rot13;
  52.  
  53.     if (argc < 2){
  54.         printf("Not enough arguments.");
  55.         exit(1);
  56.     }
  57.     fd = open(argv[1], O_RDONLY);
  58.     if (fd == -1){
  59.         int errsv = errno;
  60.         print_error(argv[0], "open() failed", errsv);
  61.         exit(errsv);
  62.     }
  63.     rot13 = print_rot13(fd);
  64.     if (rot13 != 0){
  65.         close(fd);
  66.         print_error(argv[0], "print_rot13() failed", rot13);
  67.         exit(rot13);
  68.     }
  69.     if (close(fd) == -1){
  70.         int errsv = errno;
  71.         print_error(argv[0], "close() failed", errsv);
  72.         exit(errsv);
  73.     }
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement