a513155803 2021-02-25 17:05 采纳率: 100%
浏览 91
已结题

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

如下代码,在循环中得出最终结果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条回答 默认 最新

  • railgun010032 2021-02-25 17:09
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了