标题:新手,求高手指点一个小bug
只看楼主
madrabbit
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-1-11
结帖率:100%
已结贴  问题点数:20 回复次数:5 
新手,求高手指点一个小bug
我想写一个存储图片的程序段,编译显示的信息是:error C2664: 'image_write' : cannot convert parameter 2 from 'struct _iobuf *' to 'char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

出错的地方我用红字标出来了,等待高手指点哈


我的代码如下:
#include <stdio.h>
#include<stdlib.h>
#define X_SIZE  128      /*图像的横宽    */
#define Y_SIZE  128      /*图像的纵长    */
#define X_EXP    7         /* X_EXP=log2(X_SIZE)       */
#define Y_EXP    7         /*Y_EXP=log2(X_SIZE)        */
#define HIGH      255      /*2值图像的高端值             */
#define LOW       0        /*2值图像的低端值              */


int image_read(unsigned char image[Y_SIZE][X_SIZE], char *filename);
int image_write(unsigned char image[Y_SIZE][X_SIZE], char *filename);
        
int main ( )
        {
            FILE * fp=NULL;  //先命名指针和定义数组

            unsigned char image[Y_SIZE][X_SIZE]={{1,1,0,1},{0,0,1,0},{1,0,1}};
            
        
            if((fp=fopen("c:\\test0.bmp","wb"))==NULL){
            printf("write the bmp file has failed\n");
            return 1;
            }
                  
            


 image_write(image, fp);
            
            }



int image_write(unsigned char image[128][128], char *filename)
{
    FILE   *fp;
    fp = fopen ("test0.bmp", "wb");
    if (fp == NULL) return -1;
    else {
        fwrite(image, (size_t)X_SIZE, (size_t)Y_SIZE, fp);
        fclose(fp);
        return 0;
        }
    }        
搜索更多相关主题的帖子: bug 
2010-07-23 16:17
madrabbit
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-1-11
得分:0 
在线等,高手快出手啊
2010-07-23 16:39
露点不违法
Rank: 2
等 级:论坛游民
帖 子:3
专家分:40
注 册:2010-7-23
得分:20 
函数声明里,第二个参数是char*,但是你在调用的时候传人的参数是FILE*

#include <stdio.h>
#include<stdlib.h>
#define X_SIZE  128      /*图像的横宽    */
#define Y_SIZE  128      /*图像的纵长    */
#define X_EXP    7         /* X_EXP=log2(X_SIZE)       */
#define Y_EXP    7         /*Y_EXP=log2(X_SIZE)        */
#define HIGH      255      /*2值图像的高端值             */
#define LOW       0        /*2值图像的低端值              */


int image_read(unsigned char image[Y_SIZE][X_SIZE], char *filename);
int image_write(unsigned char image[Y_SIZE][X_SIZE], /*char *filename*/FILE* fp);
        
int main ( )
{
            FILE * fp=NULL;  //先命名指针和定义数组

            unsigned char image[Y_SIZE][X_SIZE]={{1,1,0,1},{0,0,1,0},{1,0,1}};
            
        
            if((fp=fopen("c:\\test0.bmp","wb"))==NULL){
            printf("write the bmp file has failed\n");
            return 1;
            }
            
            
            
            
            image_write(image, fp);

            return 0;
            
}



int image_write(unsigned char image[128][128], /*char *filename*/FILE* fp)
{
    //FILE   *fp;
    if (NULL == fp)
        return -1;

    fp = fopen ("test0.bmp", "wb");
    if (fp == NULL) return -1;
    else {
        fwrite(image, (size_t)X_SIZE, (size_t)Y_SIZE, fp);
        fclose(fp);
        return 0;
    }
}
收到的鲜花
  • madrabbit2010-07-24 21:08 送鲜花  3朵   附言:我很赞同
2010-07-23 18:23
露点不违法
Rank: 2
等 级:论坛游民
帖 子:3
专家分:40
注 册:2010-7-23
得分:0 
另外一种方法是在主函数里不要读文件,而是传入文件名。

 image_write(image, "c:\\test0.bmp");
2010-07-23 18:24
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:0 
是的,传入文件名就可以了

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-23 19:51
madrabbit
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-1-11
得分:0 
回复 3楼 露点不违法
恩,问题真的如你所说的。非常感谢!
2010-07-24 20:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-313815-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.869843 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved