a513155803
a513155803
采纳率66.7%
2021-02-25 17:05

C语言多线程循环传输参数

100
已结题

如下代码,在循环中得出最终结果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;
    }
}
  • 点赞
  • 收藏
  • 复制链接分享

2条回答

  • a513155803 a513155803 2月前

    用结构体可以解决

    点赞 评论 复制链接分享
  • railgun010032 railgun010032 2月前

    adds重复定义了,另外你最少得粘全吧

    点赞 评论 复制链接分享