这里的0怎么精准截断 又不影响程序?应该如何修改inputdivide?

#include
#include
float input(void);
float inputdivide(void);
float divide(float num1 ,float num2);
int main(void)
{
int ch ;
float answer;
float firnum , secnum;

while((ch = getchar()) != EOF)
{
    if(ispunct(ch) || ch == '\n')
        continue;
    {
        printf("divide\n");
        firnum = input();
        secnum = inputdivide();
        answer = divide(firnum,secnum);
        break;
    }
}
return 0;

}

float inputdivide(void)
{
float input;
char ch;

while(scanf("%f",&input) != 1)
{

    while((ch = getchar()) != '\n')
        {
            putchar(ch);
        }
        printf("again!\n");
        
    while(input == 0 )
    {
        printf("again\n");
        break;
    }
}
return input;

}

float input(void)
{
float input;
char ch;

while(scanf("%f",&input) != 1)
{
    while((ch = getchar()) != '\n')
        putchar(ch);
    printf("again!\n");
}
return input;

}
float divide(float num1 ,float num2)
{
float output;
output = num1 / num2 ;
printf("%g / %g = %g\n",num1,num2,output);

return output;

}

想要输入第二个数的时候0的时候把0截断,但是程序截不断,为什么inputdivide应该怎么改?

scanf("%f",&input) != 1如果改成scanf("%f",&input) == 1程序就输出不了的数,为什么?

while(input == 0 )
{
printf("again\n");
break;
{
}
如果这一段你想表达的是退出整个input回调函数,那这里要更改成 if(input==0),因为如果是while .那么只能退出这一下小层的while.整个大结构体还没退出。