Tu fais erreur dans le traitement des erreurs
if(pthread_create(pth,0,lecture,NULL))
en cas d'echec pthread_create renvoi -1, et c'est la ou tu dois exécuter perror, de meme pour pthread_join
ce que je te conseil c'est d'enlever le traitement des erreurs vu que tu utilises de simple fonction bien définie
Une autre remarque, il faut synchroniser la fonction lecteur et la fonction rédacteur, il y a plusieurs manière de le faire, des sémaphores, ou de simple variables booléenne ce qui serait l’idéal
si tu ne les synchronise pas, la fonction afficher s’exécute plusieurs fois en affichant le même caractère
Pour terminer, il faut séparer la variable ou tu récupères le caractère, en utilisant deux variable, une pour récuperer le caractère, une autre pour faire le test (!='F' || ='f') et d'envoyer première variable à la fonction afficher
Bon courage
Partager