Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Füge hier die Header hinzu
- * schau dir dafür die man pages an.
- */
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <stdint.h>
- #include <fcntl.h>
- #include <errno.h>
- #include <sys/types.h>
- /*
- * Dies ist ein mögliches Grundgerüst für eine
- * Funktion die etwas rot13 rotiertes ausgiebt.
- * Vergiss nicht, C strings müssen '\0' (Null) terminiert
- * sein, wenn du Sie mit printf ausgeben willst!
- *
- * !Du musst diese Methode aber nicht nutzen.!
- *
- * Beachte nur Buchstaben, keine Sonderzeichen.
- * Der Modulo operator könnte von Hilfe sein ;)
- */
- int print_rot13(int fd){
- ssize_t i, length;
- char letter;
- while (1){
- length = read(fd,&letter,1);
- if (length == 0){break;}
- if (length <0){return errno;}
- if (letter >= 65 && letter <= 90){
- letter = (letter - 65 + 13) % 26 + 65;
- printf("%c", letter);
- }
- else if (letter >= 97 && letter <= 122){
- letter = (letter - 97 + 13) % 26 + 97;
- printf("%c", letter);
- }
- }
- return 0;
- }
- //Hier noch bitte
- void print_error(char* program, char* msg, int errnum){
- char *error = strerror(errnum);
- printf("%s: %s: %s\n", program, msg, error);
- }
- int main(int argc, char* argv[]){
- int fd, rot13;
- if (argc < 2){
- printf("Not enough arguments.");
- exit(1);
- }
- fd = open(argv[1], O_RDONLY);
- if (fd == -1){
- int errsv = errno;
- print_error(argv[0], "open() failed", errsv);
- exit(errsv);
- }
- rot13 = print_rot13(fd);
- if (rot13 != 0){
- close(fd);
- print_error(argv[0], "print_rot13() failed", rot13);
- exit(rot13);
- }
- if (close(fd) == -1){
- int errsv = errno;
- print_error(argv[0], "close() failed", errsv);
- exit(errsv);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement