c : How to signal end of input

标签 c input key-value

在这个提示用户输入多项式的简单程序中,

我使用 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/

相关文章:

java - 模拟 java.util.Scanner 的用户输入

javascript - 为什么我不能通过 javascript 更改文本字段的值?

python - 如何使用Python搜索字典值是否包含特定字符串

couchdb - 哪个是最适合 RDBMS 背景人员的 Key-Value Store?

c - 错误: Void Value not ignored as it ought to be, C 编程

c - 为什么在 C 代码中,当除了其中的字母没有发生任何变化时,get 和 put 的行为会有所不同?

Javascript:更改输入值时设置光标位置

C 声明顺序错误

c - 2维数组简单理解

python - 如何在python中以键值对的形式打印数组?