有多个错误,大致如下:
1、canshu->fp=fp; 这两的canshu还是指向未知内存的,需要先初始化
PARA *canshu, ttt;
canshu = &ttt;
canshu->fp=fp;
2、fclose(fp); 由于把fp传给各个子线程,子进程结束前不能关闭文件
3、各个子线程共享canshu导致统计错误。由于各个线程统计的参数是不同的,不能共享。
文件指针canshu->fp,每次读取后都会发生偏移,导致其他线程不是从文件开头开始读取的
canshu->i,每个子线程创建都被修改,导致之前线程使用的i值也被修改
4、temp=pthread_create(&thread2,NULL,printnum,NULL);
printnum线程需要保证number限制执行完之后才能执行,否则统计输出的统计不对