Я работаю над заданием для моего класса кодирования C, которое требует от нас создания нескольких потоков, выполняющих разные функции. Чтобы облегчить путаницу, я пытаюсь выполнять программу по одному потоку за раз, но у меня возникают некоторые проблемы. Вот мой код:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void * print_string_in_reverse_order(void *str)
{
// This function is called when the new thread is created
printf("%s","In funciton start_routine(). Your string will be printed backwards.");
char *word[50];
strcpy (*word, (char *)str);
int length = strlen(*word);
for (int x = length-1; x >= 0; x--){
printf("%c",&word[x] );
}
pthread_exit(NULL); // exit the thread
}
int main(int argc, char *argv[])
{
/* The main program creates a new thread and then exits. */
pthread_t threadID;
int status;
char input[50];
printf("Enter a string: ");
scanf("%s", input);
printf("In function main(): Creating a new thread\n");
// create a new thread in the calling process
// a function name represents the address of the function
status = pthread_create(&threadID, NULL, print_string_in_reverse_order, (void *)&input);
// After the new thread finish execution
printf("In function main(): The new thread ID = %d\n", threadID);
if (status != 0) {
printf("Oops. pthread create returned error code %d\n", status);
exit(-1);
}
printf("\n");
exit(0);
}
В настоящее время, хотя у меня нет ошибок компиляции, он ничего не печатает и, по-видимому, не переворачивает строку. Я очень новичок в C, поэтому я предполагаю, что это что-то вроде ошибок с моими указателями, но даже после нескольких изменений и попыток я не могу понять, в чем дело. У кого-нибудь есть идея?