请在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。
不知道你这个问题是否已经解决, 如果还没有解决的话: