siema chce w miejsce fseek(plik, TUTAJ, 0) dac argument podawany z konsoli udało mi sie (przynajmniej tak mi sie wydaje wysłac juz argument przez strukture ale nie potrafie zmienic podanego argumentu w liczbe int próbowałem zrobic to za pomocą atoi w strukturze ale w wyniku zamiast wypisywac interesujacy mnie znak zawsze wypisuje znak rąbu z znakiem zapytani
#include <unistd.h>
#include <pthread.h>
#include <stdio.h>
#include <cstdlib>
#include <string>
typedef struct param {
int p1,p2,id;
}Param;
bool czy_istnieje(char* arg){
auto *param = (Param*)arg;
long int m = param->p1;
//sprawdzanie czy plik istnieje jesli nie wysylam false do main
FILE *plik=fopen(arg, "r");
printf("Ścieżka pliku: \n%s\n", arg);
if(plik==NULL){
printf("plik nie istnieje\n");
fclose(plik);
return false;
}
else {
//jesli istnieje to wysylam true
printf("Plik znajdujacy się w ścieżce %s istnieje\n", arg);
fseek(plik, m , 0);
printf("%c\n", fgetc(plik));
fclose(plik);
return true;
}
}
void *thread_function(void *arg) {
auto *param = (Param*)arg;
long int m = param->p1*param->p2;
printf("ID watku to: %d\nTID: %lu \n",param->id,pthread_self());
return (void*)m;
}
int main(int argc, char **argv) {
int rfv = argc;
int err;
int cnt,id=1;
Param param;
int w = (rfv) / 2;
long int MOut[w];
if(argc==4){
if(!(czy_istnieje(argv[1])))
for(cnt = 1; cnt < (rfv - 1); cnt+=2) {
param.p1 = atoi(argv[cnt]);
param.p2 = atoi(argv[cnt+1]);
param.id = id;
id++;
if(err != 0)
fprintf(stderr, "Error creating the thread");
}
}
return 0;
}
a