我编写的代码出现以下错误。无法将参数 1
的 char (*)[10][256]
转换为 char*
到 int pushInBuffer(char*)
。我不知道应该向 pushInBuffer()
引入什么类型的输入参数。
void *consumer(void *var) {
int i;
//char line[256];
for(;;) {
if(popFromBuffer(&buf))
fprintf(stderr, "Error Consuming");
else {
for(i = 0; i < BUFFERSIZE; i++)
fputs(buf[i], out);
}
}
pthread_exit(0);
}
int popFromBuffer(char *item) { // How do I give a 2_D array as input parameter and access in the function.
sem_wait(&fullCount);
sem_wait(&mutex);
*item = buf[removePointer][256];
buf[removePointer++][256] = -1;
removePointer = removePointer % BUFFERSIZE;
sem_post(&mutex);
sem_post(&emptyCount );
return 0;
}
注意:如果您将 buf 用作全局变量,则无需将它从一个函数传递到另一个函数。
//如何给一个二维数组作为输入参数并在函数中访问。
int popFromBuffer( char *item );
改为
int popFromBuffer( char* item[] );
和
buf[BUFFERSIZE][256] change to char* buf[BUFFERSIZE];
或者你可以用结构来做
typedef struct _BUF
{
buf[BUFFERSIZE][256];
}BUF;
int popFromBuffer(BUF b);
{
/* access buffer */
b.buf
}
int main()
{
BUF b ={0};
popFromBuffer(b);
return 0;
}
我是一名优秀的程序员,十分优秀!