Tablice obsługujące ciągi znaków w argv
można modyfikować.
Ale nie masz możliwości poznania ich rozmiarów.
Byłbym niezadowolony widząc kod, który (próbuje) zwiększyć rozmiar ciągów.
#include <stdio.h>
#include <string.h>
// this program may behave erraticaly
int main(int argc, char **argv) {
for (int k = 1; k < argc; k++) {
printf("original argv[%d] is %s\n", k, argv[k]);
}
printf("\n");
for (int k = 1; k < argc; k++) {
strcat(argv[k], " foo"); // add foo to each argv string
printf("first modification to argv[%d] is %s\n", k, argv[k]);
}
printf("\n");
for (int k = argc; k > 1; k--) {
strcat(argv[k - 1], " bar"); // add bar to each argv string
printf("final argv[%d] is %s\n", k - 1, argv[k - 1]);
}
return 0;
}
Na moim komputerze, nazywając ten program z one two three
argumentów produkuje
original argv[1] is one
original argv[2] is two
original argv[3] is three
first modification to argv[1] is one foo
first modification to argv[2] is foo foo
first modification to argv[3] is foo foo
final argv[3] is foo foo bar
final argv[2] is foo foo foo bar bar
final argv[1] is one foo foo foo bar bar bar
Możliwa duplikat [Jakie są argumenty do main() dla?] (Http://stackoverflow.com/questions/ 3734111/what-are-the-arguments-to-main-for) – user007
To nie jest dosłowne. Możesz to zmienić. – BLUEPIXY
Wiem, do czego służą i co mają na myśli, zastanawiając się, czy to nie były literały. –