C中输入的[数字,数字]形式的输入条件不正确

时间:2013-11-21 20:14:56

标签: c input conditional-statements scanf

我有一个函数应该以[数字,数字]或[数字,数字]的形式读取输入,我需要为输入错误做条件。输入应该以EOF结束这是我现在作为条件输入的while循环。问题是,它写了坏输入,例如[1,2] [3,4]] 5,4,但不是[1,2] [3,4] [5]。当第三个坐标是“未完成”时,它不会写入错误输入,它将适用于前2个坐标。当输入少于2个坐标时,还应该有写入错误输入的条件。

int a,b;
char par1, comma, par2;
printf("Your input here:\n");
while(scanf("%c %lf %c %lf %c", &par1, &a, &comma, &b, &par2)!=EOF)
   {
    if((par1!='[') || (comma!=',') || (par2!=']')) {printf("Bad input.\n");
    */ here I insert a and b in arrays */ 
    i++;
   }
if(!feof(stdin)) {free(arrayX); free(arrayY); printf("Bad input.\n);}
if(i<2) {printf("Bad input\n");}

我会非常感谢任何帮助。我在编程方面很新,请原谅我提出愚蠢的问题。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我会使用正则表达式。

我建议您查看PCRE

使用scanf尝试这样做:

while((num_read = scanf("%c %lf %c %lf %c", &par1, &a, &comma, &b, &par2)) != EOF)
{
   if((par1!='[') || (comma!=',') || (par2!=']' || num_read != 5))
   {
        printf("Bad input.\n");
        ....

此外,还有一些错误:缩进或{之后打开的if