rot13.c 557 B

1234567891011121314151617181920212223242526
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. char rot13(char x)
  4. {
  5. if ('a' <= x && x <= 'z') return ((x - 'a') + 13) % 26 + 'a';
  6. if ('A' <= x && x <= 'Z') return ((x - 'A') + 13) % 26 + 'A';
  7. return x;
  8. }
  9. #define BUFFER_SIZE (640 * 1000)
  10. char buffer[BUFFER_SIZE];
  11. int main(void)
  12. {
  13. while (!feof(stdin)) {
  14. size_t n = fread(buffer, sizeof(buffer[0]), BUFFER_SIZE, stdin);
  15. for (size_t i = 0; i < n; ++i) {
  16. buffer[i] = rot13(buffer[i]);
  17. }
  18. fwrite(buffer, sizeof(buffer[0]), n, stdout);
  19. }
  20. return 0;
  21. }