// 编写一个程序, 创建一个线程, 该线程从标准输入读取字符串, 然后将字符串逆序输出。 #include #include #include #include void *reverseOrder(void *data) { char *src_str = (char *)data; int start = 0; int end = strlen(src_str) - 1; // 动态分配内存来存储反序的字符串,确保在主函数中使用 pthread_join 获取线程的返回值时,该字符串仍然有效 char *dst_str = (char *)malloc((strlen(src_str) + 1) * sizeof(char)); strcpy(dst_str, src_str); while (start < end) { // 交换起始位置和末尾位置的字符 char tmp = dst_str[start]; dst_str[start] = dst_str[end]; dst_str[end] = tmp; // 移动指针 start++; end--; } pthread_exit(dst_str); } int main(int argc, char const *argv[]) { if (argc != 2) { printf("用法: %s 字符串\n", argv[0]); return 0; } pthread_t tid; pthread_create(&tid, NULL, reverseOrder, (void *)argv[1]); char *dst_str; pthread_join(tid, (void **)&dst_str); printf("字符串反序后为:\n%s\n", dst_str); // 释放动态分配的内存 free(dst_str); return 0; }