cannot convert from 'const char [3]' to 'char'

来源:百度知道 编辑:UC知道 时间:2024/06/08 14:56:57
主要代码:
int w, h;
char *line, *lp;
(void) puts (line);
for (lp = line, w = 0; w < width; w++) {
lp=(char *) malloc(10*sizeof(char));
*lp++ = "■";
if ((maze + w)->down)
*lp++ = ((maze + w)->path && (h == height - 1 ||
(maze + w + width)->path)) ? '.' : ' ';
else
lp=(char *) malloc(10*sizeof(char));
*lp++ = "■";
}
原来是"*lp++ = '#';没有“lp=(char *) malloc(10*sizeof(char));”,我的目的是让 '#'变为"■",因为单引号是字符,双引号是字符串,我需要输出"■",所以就添加了“lp=(char *) malloc(10*sizeof(char));”,我知道我错了,但是怎样实现我想要的功能呢?高手帮忙!
回复2楼和3楼,我在编译一个迷宫程序,你们高诉的我都编译成功了,但是2楼的程序当运行显示迷宫的时候跳出错误窗口,3楼的程序还好一点,只是显示迷宫一片空白什么都没有,这是整个函数,谢谢你们再看一下吧。我把函数放到这里了:
http://tieba.baidu.com

回二楼friday_collin,*lp++ = 'A'并不是“表达式做左值”。
这样完全可以的:
main()
{
int a[10]={0},*p=a;
*p++=2;
}

但这样不行:
main()
{
int p=0;
p++=2;
}

cannot convert from 'const char [3]' to 'char'
这个错误的关键,是不能把字符串"■"转换成字符!

void PrintMaze (maze_t maze, int width, int height)
{
int w, h;
char *line, *lp;

line = (char *) calloc ((width + 1) * 2, sizeof (char));
if (line == NULL) {
(void) fprintf (stderr, "Cannot allocate memory!\n");
exit (EXIT_FAILURE);
}
maze->up = TRUE;
(maze + (width * height) - 1)->down = TRUE;

for (lp = line, w = 0; w < width; w++) {
lp=(char *) malloc(10*sizeof(char)); /////这里申请了内存
strcpy(lp,"■"); ///////////////////////这里进行了赋值
if ((maze + w)->up)