我有一个structs
数组,其中填充了一些值。我提示用户输入一个值。然后我需要检查数组以查看用户输入的值是否包含在数组中
如果找到,则程序将继续执行
如果找不到,则程序将提示用户输入不同的值。
以下是我已编写的代码。您可以看到我已尝试扫描数组作为do-while循环条件的一部分,但这不起作用。
do
{
printf("Insert the number you want to search:\n");
numero = getInputFromUser();
} while (for (i = 0; i < numAlunos; i++) // This is where I need help
numero != vAlunos[i].numero)
如何在循环条件中扫描数组?
答案 0 :(得分:2)
如果您正在使用C99,那么您可以访问stdbool.h并且可以使用布尔类型,如果没有,只需根据您用作bool
替换的任何内容进行调整,例如typedef,#使用int。或者只返回0和1。
我也假设您的结构数组和数组长度变量是全局的,但如果它们不是,您可以修改此函数以将它们作为参数传递。
bool checkForValue(int numeroToSearch) // Guessing int, but change as needed
{
int i;
for (i = 0; i < numAlunos; i++)
{
if(numeroToSearch == vAlunos[i].numero)
{
return true;
}
}
return false;
}
然后你应该能够像这样使用它:
do
{
printf("Insert the number you want to search:\n");
number= validar_insert (2150001, 2169999);//check if the input is between this values
printf("That number doeste exist.\n");
printf("Enter another number.\n");
}while (!checkForValue(numero))
答案 1 :(得分:1)
如果您不介意使用编译器扩展,GCC和Clang都提供statement-expressions可嵌入条件:
do {
printf("Insert the number you want to search:\n");
numero = getInputFromUser();
} while (({
int i = 0;
while(i < numAlunos && vAlunos[i] != numero)
++i;
i == numAlunos; // "return value" of the statement-expressions
}));