c - 函数输入参数类型转换不当

标签 c function input producer-consumer

我编写的代码出现以下错误。 无法将参数 1char (*)[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/

相关文章:

function - GNUPLOT:用向量连接不同系列的点

c++ - "Not All Control Paths Return a Value"

c - 打印出数组不同成员的函数(只允许两个参数)

c - 如何在C中获取二叉树的高度和根到叶路径

c - 使用位移位猜测UTF-8编码

c - 我对输出感到困惑

ios - 在 iOS 上放大的输入文本类型

powershell - 新提示和 Powershell -run as 和 -nonewwindow 问题的多个输入

c - 为什么生成此代码以取消引用浮点指针?

c - 坚持在框架窗口上实现边界检查以进行均值过滤