次のコードは、gcc 4.4.5 でコンパイルおよび動作します。
#include <stdlib.h>
#include <stdio.h>
void foo(int no_of_users)
{
struct IP_addresses
{
char IPaddr[16];
};
struct IP_addresses ip_addr[no_of_users];
int i;
for(i = 0; i < no_of_users; i ++)
sprintf(ip_addr[i].IPaddr, "test%02d", i);
for(i = 0; i < no_of_users; i ++)
printf("%s\n", ip_addr[i].IPaddr);
}
int main(int argc, char **argv)
{
int i, no_of_users;
for(i = 1; i < argc; i ++)
{
no_of_users = strtol(argv[i], 0, 10);
foo(no_of_users);
}
return 0;
}
それらの基準が何を言っているのかはわかりませんが、実際にはうまくいきます. 結果として得たものは次のとおりです。
$ gcc -o ./test ./test.c
$ ./test 3 4 5
test00
test01
test02
test00
test01
test02
test03
test00
test01
test02
test03
test04