在这个提示用户输入多项式的简单程序中,
我使用 int 999 作为表示输入结束的值。
但是,这不是一个好的设计,因为用户将无法输入系数为 999 的多项式节点。
是否有替代键可以唯一表示输入结束?
相关代码:
int coeff;
int expon;
int i = 1;
printf("\nInput for polyNode %d (999 for exit):",i);
printf("\n\tInput coeff : ");
scanf("%d",&coeff);
while(coeff != 999)
{
printf("\tInput expon : ");
scanf("%d",&expon);
insertBack(&polynomial, &polynomialRear, coeff, expon);
i++;
printf("\nInput for polyNode %d (EOF for exit):",i);
printf("\n\tInput coeff : ");
scanf("%d",&coeff);
}
printPoly(polynomial);
printf("\n");
最佳答案
可以查看scanf的返回。如果扫描成功,在这种情况下,它将为扫描的一项返回 1。如果扫描不成功,它将返回 0 或 EOF。输入任何非整数值(字母...)将结束 while ( 1)
循环。
然后在 while 循环中使用 getchar()
清除输入流。
int coeff;
int expon;
int i = 1;
while(1)
{
printf("\nInput for polyNode %d :",i);
printf("\n\tInput coeff : ");
if ( ( scanf("%d",&coeff)) != 1) {
break;
}
printf("\tInput expon : ");
if ( ( scanf("%d",&expon)) != 1) {
break;
}
insertBack(&polynomial, &polynomialRear, coeff, expon);
i++;
}
while ( ( i = getchar ()) != '\n' && i != EOF) ;//clear input stream
printPoly(polynomial);
printf("\n");
关于c : How to signal end of input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36543524/