当前位置: 技术问答>linux和unix
linux c语言 操作系统 读文件 为什么读出的都是0?肯请大神指教
来源: 互联网 发布时间:2017-05-18
本文导语: 本帖最后由 u011921487 于 2014-05-14 17:05:36 编辑 #include #include #include #include #define MAX 20 int Data[MAX][2];/*读取操作数时用*/ int size=0; sem_t sem,sem1;/*信号量,sem-read,sem1-MUL/ADD*/ void ReadFile1() { FILE *fp=fopen("1.txt","rw...
#include
#include
#include
#define MAX 20
int Data[MAX][2];/*读取操作数时用*/
int size=0;
sem_t sem,sem1;/*信号量,sem-read,sem1-MUL/ADD*/
void ReadFile1()
{
FILE *fp=fopen("1.txt","rw");/*文件1.txt 是之sem_wait(&sem1);
/*保证每次读数据都互斥*/
while(!feof(fp))
{/*再文件没结束之前一直读数据*/
sem_wait(&sem);
fscanf(fp,"%d %d",&Data[size][0],&Data[size][1]);/*每次读两个*/
size++;/*执行时由于各线程间的竞争导致size
值会被任意修改,因此不会按照文件内的元顺序读出,加法与乘法运算每次也是随机的*/
printf("%d %d n",Data[size][0],Data[size][1]);
printf("%dn",size);
sem_post(&sem1);/*每读一次,同步信号量 加一,表示可用资源增加*/
}
sem_post(&sem1);
fclose(fp);
}
void Plus()
{
do{
sem_wait(&sem1);
printf("Plus:%d+%d=%dn",Data[size][0],Data[size][1],
Data[size][0]+Data[size][1]);
sem_post(&sem);
}while(size