如何在while循环的条件下与多个值进行比较

时间:2016-12-26 22:08:04

标签: c loops

我有一个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)

如何在循环条件中扫描数组?

2 个答案:

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

See it live on Coliru