Gal*_*leo 3 c++ string if-statement ncurses
void spriteput(int x,int y, int stype)
{
char sprite1[5]="OOOO";
char sprite2[5]="OOOO";
char sprite3[5]="OOOO";
char sprite4[5]="OOOO";
if (stype == 1)
{
char sprite1[5] = " OO ";
char sprite2[5] = "OOOO";
char sprite3[5] = "OOOO";
char sprite4[5] = " OO ";
mvprintw(2,y,"%s \n",sprite1);
}
mvprintw(x+1,y,"%s \n",sprite2);
mvprintw(x+2,y,"%s \n",sprite3);
mvprintw(x+3,y,"%s \n",sprite4);
}
Run Code Online (Sandbox Code Playgroud)
如果我是正确的,那么代码块应该在NCURSES屏幕上打印出来
OO
OOOO
OOOO
OO
Run Code Online (Sandbox Code Playgroud)
相反,它会打印出默认文本(第一个char语句).谁能告诉我为什么会这样?printwIf块中的语句打印出正确的文本,因此它被正确分配.先感谢您.
你在声明中的if声明会影响声明之外的声明; 一旦if语句退出,那些带阴影的声明超出范围并永远消失.
要解决这个问题,你可以做类似的事情
if (stype == 1)
{
sprite1[0] = ' ';
sprite1[3] = ' ';
// ...
Run Code Online (Sandbox Code Playgroud)
或者您可以使用类似的功能strcpy来完成同样的事情.
顺便说一下,如果打开完全警告进行编译就会向您显示错误,而不需要在此处发布.