【问题标题】:Improper type conversion in input parameter of function函数输入参数类型转换不当
【发布时间】:2014-02-21 21:23:17
【问题描述】:

我编写的代码出现以下错误。 无法将 char (*)[10][256] 转换为 char* 以将参数 1 转换为 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;
}

【问题讨论】:

  • 显示您如何调用pushInBuffer 以及pushInBuffer 参数的类型。
  • @ouah 抱歉,我意识到并编辑了问题。
  • 你没有显示buf变量的声明还是不完整的。
  • buf 声明在哪里???
  • @barak :我再次编辑。它在全球范围内声明。

标签: c function input producer-consumer


【解决方案1】:

注意:如果您使用 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;
}

【讨论】:

    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多