My code should print the numbers given as command line arguments. Instead it prints random-looking values.
What is going on and how can I fix it?
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
void* kwadrat(void* arg) {
int* x_ptr = *(int*)arg;
int x = *x_ptrl;
int wynik = x * x;
printf("%d\n", wynik);
return NULL;
}
int main(int argc, char* argv[]) {
int value, n = argc - 1;
pthread_t* thread = malloc(sizeof(pthread_t) * n);
int* tab = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
tab[i] = atoi(argv[i + 1]);
pthread_create(&thread[i], NULL, kwadrat, tab;
}
for (int i = 0; i < n; i++) {
pthread_join(thread[i], NULL);
}
free(thread);
free(tab);
return 0;
}