如下代码,在循环中得出最终结果addss后,因pthread_create的最后一个参数是&,导致addss发生改变后,results中的参数也会发生改变,试了好多种方式都不行,有没有大神知道该这么弄
// 结果
void results(char ipaddr[15]) {
printf(" %s\n", ipaddr);
return;
// 其他代码
}
void test(char adds[15]) {
char strInt[3] = "\0", addss[15] = "\0";
int i, x = 0;
pthread_t pth[256];
for (i = 1; i <= 254; i++) {
sprintf(strInt, "%d", i);
strcpy(addss, adds);
strcat(addss, strInt);
pthread_create(&pth[x++], NULL, (void *)results, addss);
}
}
void main(int argc, char *argv[]) {
if (argc > 1) {
char ipaddr[100] = "\0";
sscanf(argv[1], "%s", ipaddr);
test(ipaddr);
} else {
printf("请输入相关值!\n");
return;
}
}