fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void) {
  5. // ideone не умеет в аргументы, поэтому так.
  6. const char *argv[] = {
  7. "./a.out", "-f", "xxx", "-f", "-f", "yyy", "-f"
  8. };
  9. int argc = sizeof(argv) / sizeof(argv[0]);
  10.  
  11. puts("Before:");
  12. for (int i = 0; i < argc; i++) {
  13. printf("%d: %s\n", i, argv[i]);
  14. }
  15.  
  16. for (int i = 0; i < argc; i++) {
  17. if (strcmp(argv[i], "-f") == 0) {
  18. memmove(&argv[i], &argv[i + 1], (argc - i - 1) * sizeof(argv[0]));
  19. // Компенсируем тот факт, что по i теперь новый элемент.
  20. i--;
  21. // Самих элементов тоже стало меньше.
  22. argc--;
  23. }
  24. }
  25.  
  26. puts("After:");
  27. for (int i = 0; i < argc; i++) {
  28. printf("%d: %s\n", i, argv[i]);
  29. }
  30. }
  31.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
Before:
0: ./a.out
1: -f
2: xxx
3: -f
4: -f
5: yyy
6: -f
After:
0: ./a.out
1: xxx
2: yyy