gpt4 book ai didi

c - 处理文本输入时出现问题

转载 作者:行者123 更新时间:2023-11-30 15:49:05 24 4
gpt4 key购买 nike

我的代码有问题。我正在使用 OPENGL c++ 完成我的最终项目。

我想在opengl中创建一个关于模拟2D的代码。在我的模拟中,我要求用户输入应用程序中可以显示多少个对象。我的问题是输入无法检测字符,但可以检测超出范围的数字。我已经创建了一个代码来处理超出范围的情况,范围是关于字符而不是函数。

例如:我输入字符“a”,想要显示错误处理。比如“maaf, jumlah inputan anda tidak berada dalam range.”,所以只输入数字。

void inputan(){

printf("APLIKASI SIMULASI ANIMASI SEMUT\n\n");

printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
scanf("%f",&input);

if(input > 50 || input < 1){
ulang();
}

char a = 'a';
int aa=a;
else if(input == aa){
ulang();
}
}
void ulang(){

printf("---------------------------------------------------\n");

printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");

printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");scanf("%f",&input);

if(input > 50 || input < 1){
ulang();
}
char a = 'a';
int aa=a;
else if(input == aa){
ulang();
}
}

最佳答案

嗯,看看你的代码,我认为有很多问题。在尝试对 2D 模拟进行编程之前,您可能应该阅读 C/C++ 手册。

  • “else if”必须始终是“if”语句的一部分。
  • 避免隐式转换,即使在这种情况下是安全的:int aa=a;//a 是一个字符
  • “printf”和“scanf”是C库,对于C++来说,最好使用cout和cin等流。
  • 如无必要,请避免递归:递归可能会导致内存问题。
  • “scanf”和“%f”表示 float ,在您的情况下,您必须使用“%u”表示无符号整数。

所以你用 C 重构的代码可能看起来:

unsigned int getAntNumber()
{
unsigned int result=0;
printf("APLIKASI SIMULASI ANIMASI SEMUT\n\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
while (1!=scanf("%u",&input) || input <1 || input >50)
{
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
}
return result;
}

编辑以允许多个输入测试:

unsigned int getAntNumber()
{
unsigned int result=0;
int mustEnd=1; /*C, unlike C++ does not allow bool*/
printf("APLIKASI SIMULASI ANIMASI SEMUT\n\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
while ( mustEnd != 0)
{
if (1!=scanf("%u",&input)) /* Caution, this test must be the first one!*/
{
/*Input is not an unsigned integer*/
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
}
else if (input <1 || input >50)
{
/*Input is out of range*/
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
}
/*You may add easily more tests here*/
else
{
mustEnd=true;
}
}
return result;
}

关于c - 处理文本输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437747/

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