我编写的代码出现以下错误。
无法将参数 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;
}
关于c - 函数输入参数类型转换不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945450/