189 8069 5689

C语言缓冲区置0函数 c语言中缓冲区是什么意思

C语言里有没有把数组元素全部赋值为0的函数

方法一、在定义时赋初值

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了宛城免费建站欢迎大家使用!

1、静态数组

int[3][3]={0};

2、动态数组

int**a=newint*[n];

for(inti=0;i<n;i++)

a[i]=newint[m](0);

方法二、在定义完后赋值

for(inti=0;i<n;i++)

for(intj=0;j<m;j++)

a[i][j]=0;

方法三、用一个循环吧数组所有元素设置为0:

intarr[100];

inti=0;

for(i=0;i<100;i++)

arr[i]=0;//ThiswillmakeallZERO

方法四、

1、全局变量和静态变量初始化时会自动被设置为0。如果们声明全局变量,那么在运行前会变成全0。

intarr[1024];//Thisisglobal

intmain(void)

//statements

2、对于局部数组简写的初始化语法。如果一个数组被部分初始化,没有被初始化的元素会被自动设置为相应类型的0。这是编译器自动完成的。可以这样写:

intmain(void)

intarr[1024]={0};//ThiswillmakeallZERO

//statements

3、可以用memset函数在程序开始时初始化数组。这条命令这在已经修改了数组之后又想将它重置为全0特别有用。

intarr[1024];

arr[5]=67;

memset(ZEROARRAY,0,1024);//ThiswillreinitializealltoZERO

生产者-消费者”问题 用C语言编写

#includestdio.h  

#includestdlib.h  

#includeunistd.h  

#includesemaphore.h  

#includepthread.h  

#define PRODUCER 10//生产者数量  

#define CONSUMER 8//消费者数量  

#define BUFFER 20//缓冲区数量  

sem_t empty,full;//同步信号量  

pthread_mutex_t mutex;//互斥信号量  

int buffer[BUFFER]; //缓冲区  

int producer_id=0,consumer_id=0;//生产者消费者ID  

int index_in=0,index_out=0;//生产者 消费者 存放 消费的位置  

void print()//输出缓冲区  

{  

int i;  

printf("Buffer:\n");  

for(i=0;i20;i++)  

{  

printf("___");  

}  

printf("\n");  

for(i=0;i20;i++)  

printf("|%d|",buffer[i]);  

printf("\n");  

for(i=0;i20;i++)  

{  

printf("———");  

}   

printf("\n");  

}  

void *Producer()//生产者函数  

{  

int ID=++producer_id;  

while(1)  

{  

sleep(3);  

sem_wait(empty);  

pthread_mutex_lock(mutex);  

index_in=index_in%BUFFER;  

printf("Producer %d in %d.\n",ID,index_in);  

buffer[index_in]=1;//缓冲区置0  

print();//输出缓冲区情况  

index_in++;  

pthread_mutex_unlock(mutex);  

sem_post(full);  

}  

}  

void *Consumer()//消费者函数  

{  

int ID=++consumer_id;  

while(1)  

{  

sleep(3);  

sem_wait(full);  

pthread_mutex_lock(mutex);  

index_out=index_out%BUFFER;  

printf("\033[01;34mConsumer %d in %d\033[0m\n",ID,index_out);  

buffer[index_out]=0;//缓冲区置0  

print();//输出缓冲区情况  

index_out++;  

pthread_mutex_unlock(mutex);  

sem_post(empty);  

}  

}  

int main()  

{  

//freopen("text.txt","w",stdout);  

int rthread[18],i;  

pthread_t producer[PRODUCER];//生产者  

pthread_t consumer[CONSUMER];//消费者  

int sinit1=sem_init(empty,0,BUFFER);//初始化同步信号量  

int sinit2=sem_init(full,0,0);  

int minit =pthread_mutex_init(mutex,NULL);//初始化互斥信号量  

if(sinit1  sinit2)  

{  

printf("sem initialize failed /n");  

exit(1);  

}  

if(minit)  

{  

printf("sem initialize failed /n");  

exit(1);  

}  

for(i=0;iPRODUCER;i++)//创建生产者线程  

{  

rthread[i]=pthread_create(producer[i], NULL, Producer, NULL);  

if(rthread[i])  

{  

printf("producer %d create failed /n", i);  

exit(1);  

}  

}  

for(i=0;iCONSUMER;i++)//创建消费者线程  

{  

rthread[i]=pthread_create(consumer[i], NULL, Consumer,NULL);  

if(rthread[i])  

{  

printf("consumer %d create failed /n", i);  

exit(1);  

}  

}  

for(i=0;iPRODUCER;i++)//销毁生产者线程  

{  

pthread_join(producer[i],NULL);  

}  

for(i=0;iCONSUMER;i++)//销毁生产者线程  

{  

pthread_join(consumer[i],NULL);  

}  

exit(0);  

}

C语言中清除内存缓冲区的函数是什么??

C语言中清除内存缓冲区的函数是fflush(

),清除输入缓冲区用fflush(stdin);

其中stdin表示标准输入。

该函数通常用在输入类函数的前面,用以清除输入缓冲区中的内容,避免接收到上次残留的内容而出错。

举例如下:

1、不加fflush函数:

// 将输入的5个字符存放到数组str中,并输出

int i;

char ch, str[6]={'\0'};

for(i=0; i5; i++)

{

scanf("%c", ch);

str[i] = ch;

}

printf("%s\n", str);

// 程序只能输入三个字符(每个字符间包含一个回车符),因为不加fflush函数时,将残留在缓冲区中的回车符也当成了一个字符输入到数组str中。

2、加fflush函数:

int i;

char ch, str[6]={'\0'};

for(i=0; i5; i++)

{

fflush(stdin); // 清除留在缓冲区中的回车符,确保接收到的是用户输入的字符

scanf("%c", ch);

str[i] = ch;

}

printf("%s\n", str);

// 程序能正常输出


当前标题:C语言缓冲区置0函数 c语言中缓冲区是什么意思
转载来于:http://cdxtjz.cn/article/ddpodco.html

其他资讯