fork(19) download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <assert.h>
  5.  
  6. char *verschluesseln(char *s, int n);
  7. char *entschluesseln(char *s, int n);
  8.  
  9. int main()
  10. {
  11. #define STR "DIESERKLARTEXTISTJETZTZUVERSCHLUESSELN"
  12.  
  13. char str[] = STR;
  14. char *ver;
  15. char *ent;
  16.  
  17. printf("unverschluesselt: %s\n", str);
  18.  
  19. ver = verschluesseln(str, 3);
  20. printf("verschluesselt: %s\n", ver);
  21.  
  22. ent = entschluesseln(ver, 3);
  23. printf("entschluesselt: %s\n", ent);
  24.  
  25. assert(strcmp(ent, STR) == 0);
  26.  
  27. return 0;
  28. }
  29.  
  30. char *verschluesseln(char *s, int n)
  31. {
  32. int i, x = strlen(s) / n + ((strlen(s) % n) > 0);
  33. char *b = malloc(strlen(s));
  34. for (i = 0; s[i] != '\0'; i++)
  35. {
  36. b[x*(i%n) + i / n] = s[i];
  37. }
  38. for (i = 0; s[i] != '\0'; i++)
  39. {
  40. s[i] = b[i];
  41. }
  42. free(b);
  43. return s;
  44. }
  45.  
  46. char *entschluesseln(char *s, int n)
  47. {
  48. int i, x = strlen(s) / n + ((strlen(s) % n) > 0);
  49. char *b = malloc(strlen(s));
  50. for (i = 0; s[i] != '\0'; i++)
  51. {
  52. b[i] = s[x*(i%n) + i / n];
  53. }
  54. for (i = 0; s[i] != '\0'; i++)
  55. {
  56. s[i] = b[i];
  57. }
  58. free(b);
  59. return s;
  60. }
  61.  
  62.  
Success #stdin #stdout 0s 2144KB
stdin
Standard input is empty
stdout
unverschluesselt: DIESERKLARTEXTISTJETZTZUVERSCHLUESSELN
verschluesselt:   DSKRXSETVSLSLIELTTTTZECUSNERAEIJZURHEE
entschluesselt:   DIESERKLARTEXTISTJETZTZUVERSCHLUESSELN