fork(4) download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. void print_ary(int argc, char *argv[]) {
  4. int i;
  5. for (i = 1; i < argc; i++) {
  6. printf("%s ", argv[i]);
  7. }
  8. printf("\n");
  9. }
  10. void f(int argc, char *argv[], char *ary[]) {
  11. int i, j, n, m;
  12. n = argc;
  13. m = n / 2;
  14. for (i = 1; i < n; i++) {
  15. j = (i <= m) ? (2 * i) : (n - (2 * (i - m)));
  16. ary[j] = argv[i];
  17. }
  18. }
  19. void g(int argc, char *argv[], char *ary[]) {
  20. int i, j, n;
  21. n = argc;
  22. for (i = 1; i < n; i++) {
  23. j = ((i % 2) == 0) ? (i / 2) : (n - ((i / 2) + 1));
  24. ary[j] = argv[i];
  25. }
  26. }
  27. int main_part11_254(int argc, char *argv[]) {
  28. char **aryf;
  29. char **aryg;
  30. printf("[%d]\n", argc);
  31. if (((argc - 1) % 2) == 0) {
  32. aryf = malloc(argc * sizeof(char*));
  33. aryg = malloc(argc * sizeof(char*));
  34. print_ary(argc, argv);
  35. f(argc, argv, aryf);
  36. print_ary(argc, aryf);
  37. g(argc, aryf, aryg);
  38. print_ary(argc, aryg);
  39. free(aryf);
  40. free(aryg);
  41. }
  42. return 0;
  43. }
  44. int main(int argc, char *argv[]) {
  45. char *argv1[] = {"", "1", "2", "3", "4", "5", "6"};
  46. char *argv2[] = {"", "a", "b", "c", "d", "e", "f"};
  47. if (argc <= 1) {
  48. main_part11_254(sizeof(argv1) / sizeof(char*), argv1);
  49. main_part11_254(sizeof(argv2) / sizeof(char*), argv2);
  50. } else {
  51. main_part11_254(argc, argv);
  52. }
  53. return 0;
  54. }
Success #stdin #stdout 0s 4220KB
stdin
Standard input is empty
stdout
[7]
1 2 3 4 5 6 
6 1 5 2 4 3 
1 2 3 4 5 6 
[7]
a b c d e f 
f a e b d c 
a b c d e f