1

我是一个新手,但我花了很多时间试图了解我在这里做错了什么。

我正在使用 Turbo C,有时我得到的输出消息实际上是 Borland Turbo C 文本的一部分,所以似乎文本没有存储在 char lossmsg..

void lose(int d) //Different messages for different deaths
{
  char *losemsg; //Lose message
  setcolor(4);
  settextstyle(0,0,1); //Set font size
switch(d)
{
case '1': losemsg="STOP HURTING THE WALL!"; //Hitting the wall
break;
case '2': losemsg="Like all great dictators, you've fallen...!"; //Falling
break;
case '3': losemsg="Oh well, sucks to be you...";
break;
case '4': losemsg="You've been killed by a spike, how sad..."; //Spike
break;
case '5': losemsg="You've been hit by something that defies gravity!";
break;
case '6': losemsg="There is no lifeguard, you've drowned!"; //Drowning
break;
}
outtextxy(100,150,losemsg);
delay(2000);
}
4

2 回答 2

2

代码看起来不错,除非输入值在'1'-之外'6'。在后一种情况下,代码的行为未定义(您正在显示未初始化指针指向的字符串)。

于 2013-03-23T18:55:23.563 回答
0
...
case '6': losemsg="There is no lifeguard, you've drowned!"; //Drowning
break;

default: /* If you enter not 1..6 then it simply ends wothout strange behaviour. */
break;
}

您已经创建了一个名为lostmsg的指针。该指针必须指向/在某个变量上。

如果目标是: 1) 输入从 1 到 6 的数字。 2) 根据输入的数字,它将打印一些字符串。我对吗?如果是这样,请阅读以下内容:我认为char可能包含 1 个字符。但是要记住一个字符串(超过 1 个字符),您可以创建 6 个变量(创建 6 个char类型的数组):

/* You can create them beforehead in the individual file of function */
/* (it's difficult, but it is worth it! =) ) */
char str_1; /* 1..6 */
scanf("%s", &str_1);
printf("%s", &str_1);

并且,根据输入的数字,它将打印所需的字符串。

于 2013-03-24T19:18:05.843 回答