请在linux 利用c语言编程实现主次两个线程,当主线程从键盘输入一个字符串后,从线程能打印出这个字符串的长度,并且当字符串为”exit”时退出次线程。

请在linux 利用c语言编程实现主次两个线程,当主线程从键盘输入一个字符串后,从线程能打印出这个字符串的长度,并且当字符串为”exit”时退出次线程。
cpp

“Devil组”引证GPT后的撰写:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>

void *PrintLength(void *str);

int main()
{
    char input[100];
    pthread_t thread_id;
    int ret;

    printf("请输入一个字符串:\n");
    scanf("%s", input);

    ret = pthread_create(&thread_id, NULL, PrintLength, (void*)input);
    if (ret != 0)
    {
        printf("线程创建失败!\n");
        exit(1);
    }

    pthread_join(thread_id, NULL);
    printf("主线程退出!\n");

    return 0;
}

void *PrintLength(void *str)
{
    char *input = (char*)str;

    while (strcmp(input, "exit") != 0)
    {
        printf("字符串长度为:%lu\n", strlen(input));
        printf("请输入一个字符串:\n");
        scanf("%s", input);
    }

    printf("从线程退出!\n");

    return NULL;
}


首先从键盘输入一个字符串,然后调用pthread_create()函数创建从线程,并将输入的字符串作为参数传递给从线程。如果线程创建失败,程序将直接退出。接着,主线程调用pthread_join()函数等待从线程结束,并在从线程结束后打印一条消息。

在PrintLength()函数中,首先将传入的参数转换为字符串指针,并使用while循环不断打印输入字符串的长度。当输入字符串为”exit”时,循环结束,并打印一条消息表示从线程退出。最后,函数返回NULL。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^