gpt4 book ai didi

c++ - 如果声明无效

转载 作者:太空狗 更新时间:2023-10-29 19:50:26 26 4
gpt4 key购买 nike

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);
}

如果我是正确的,那段代码应该在 NCURSES 屏幕上打印出来

 OO  
OOOO
OOOO
OO

相反,它打印出默认文本(第一个 char 语句)。谁能告诉我这是为什么? If block 中的 printw 语句打印出正确的文本,因此它被正确分配。提前谢谢你。

最佳答案

if 语句中的声明覆盖了它之外的声明;一旦 if 语句退出,那些隐藏的声明就会超出范围并永远消失。

要解决这个问题,您可以做类似的事情

if (stype == 1)
{
sprite1[0] = ' ';
sprite1[3] = ' ';
// ...

或者您可以使用像 strcpy 这样的函数来完成同样的事情。

顺便说一句,在这种情况下,在打开完整警告的情况下进行编译会向您显示错误,而无需在此处发布。

关于c++ - 如果声明无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com