#include <stdio.h>
#include <string.h>
int main(void) {
// ideone не умеет в аргументы, поэтому так.
const char *argv[] = {
"./a.out", "-f", "xxx", "-f", "-f", "yyy", "-f"
};
int argc = sizeof(argv) / sizeof(argv[0]);
for (int i = 0; i < argc; i++) {
printf("%d: %s\n", i
, argv
[i
]); }
for (int i = 0; i < argc; i++) {
if (strcmp(argv
[i
], "-f") == 0) { memmove(&argv
[i
], &argv
[i
+ 1], (argc
- i
- 1) * sizeof(argv
[0])); // Компенсируем тот факт, что по i теперь новый элемент.
i--;
// Самих элементов тоже стало меньше.
argc--;
}
}
for (int i = 0; i < argc; i++) {
printf("%d: %s\n", i
, argv
[i
]); }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBtYWluKHZvaWQpIHsKCS8vIGlkZW9uZSDQvdC1INGD0LzQtdC10YIg0LIg0LDRgNCz0YPQvNC10L3RgtGLLCDQv9C+0Y3RgtC+0LzRgyDRgtCw0LouCgljb25zdCBjaGFyICphcmd2W10gPSB7CgkJIi4vYS5vdXQiLCAiLWYiLCAieHh4IiwgIi1mIiwgIi1mIiwgInl5eSIsICItZiIKCX07CglpbnQgYXJnYyA9IHNpemVvZihhcmd2KSAvIHNpemVvZihhcmd2WzBdKTsKCQoJcHV0cygiQmVmb3JlOiIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKCQlwcmludGYoIiVkOiAlc1xuIiwgaSwgYXJndltpXSk7Cgl9CgkKCWZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CgkJaWYgKHN0cmNtcChhcmd2W2ldLCAiLWYiKSA9PSAwKSB7CgkJCW1lbW1vdmUoJmFyZ3ZbaV0sICZhcmd2W2kgKyAxXSwgKGFyZ2MgLSBpIC0gMSkgKiBzaXplb2YoYXJndlswXSkpOwoJCQkvLyDQmtC+0LzQv9C10L3RgdC40YDRg9C10Lwg0YLQvtGCINGE0LDQutGCLCDRh9GC0L4g0L/QviBpINGC0LXQv9C10YDRjCDQvdC+0LLRi9C5INGN0LvQtdC80LXQvdGCLgoJCQlpLS07CgkJCS8vINCh0LDQvNC40YUg0Y3Qu9C10LzQtdC90YLQvtCyINGC0L7QttC1INGB0YLQsNC70L4g0LzQtdC90YzRiNC1LgoJCQlhcmdjLS07CgkJfQoJfQoJCglwdXRzKCJBZnRlcjoiKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CgkJcHJpbnRmKCIlZDogJXNcbiIsIGksIGFyZ3ZbaV0pOwoJfQp9Cg==