【发布时间】:2014-10-07 02:11:50
【问题描述】:
我正在制作一个基于选择的故事,在我要求用户按 Enter 键后,选项出现在他们不希望自己的角色成为哪个职业上。每次都会弹出此窗口并显示“'legends.exe' 已停止工作。”
#include <stdio.h>
int main()
{
char firstname[15];
char class;
char swordch0c1;
char enter;
printf("Hello there! Could I have your first name?\n");
scanf("%s",firstname);
printf("\n---------------------The Legend of %s---------------------",firstname);
printf("\nPress Enter to continue.");
enter=getch();
if(enter=="\n");
printf("\n\n\nYou are %s, a: \nA.Swordsman\nB.Assassin\nC.Archer\nD.Mage\n",firstname);
scanf("%c",class);
return(0);
}
对不起,如果我很难或不够具体。顺便说一句,我正在使用 Windows。
【问题讨论】:
-
分享一个导致问题的确切代码。
-
你应该扫描到变量的地址...例如。
scanf(&class) -
每个 C 开发人员都会在某些时候意识到低级输入函数的不足(例如,我的 真实 名称是
Tarquin Fin-tim-lin-bin-whin-bim-lim-bus-stop-F'tang-F'tang-Olé-Biscuitbarrel,而您的代码似乎每次都会崩溃时间),并写出更好、更安全、更快、更聪明、更帅气的作品:-)这是我的:powerfield-software.com/?p=65。随心所欲地使用它,并将更多精力放在游戏逻辑上。 -
@paxdiablo 你的
getLine()只解决了输入比预期缓冲区长的许多问题之一:它将避免长姓溢出到下一个输入提示的不同步。这很少是需要的。相反,很多时候正确的做法是分配一个更大的缓冲区,可以容纳整个输入。 -
亚当,没有一个函数可以解决每一个问题,你必须在某处画线。例如,如果无法分配内存,你会怎么做?链接中的函数解决了最普遍的问题,即会使您的代码崩溃的问题。它用既可以防止这种情况又可以在您的输入不适合缓冲区时通知您的东西替换它。 如何您处理该通知取决于您。
标签: c format-specifiers