我有一个函数应该以[数字,数字]或[数字,数字]的形式读取输入,我需要为输入错误做条件。输入应该以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");}
我会非常感谢任何帮助。我在编程方面很新,请原谅我提出愚蠢的问题。
答案 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
。