2013-11-21 4 views
0

У меня есть функция, которая должна читать ввод в форме [номер, номер] или [номер, номер], и мне нужно сделать условия для плохого ввода. Вход должен заканчиваться EOF. Это то, что я получил теперь как цикл для ввода с условиями. Проблема состоит в том, что он пишет плохой ввод, например, для [1,2] [3,4]] 5,4, но не для [1,2] [3,4] [5. Когда третья координата «незавершенна», она не будет записывать плохой ввод, она будет работать для первых двух координат. Также должно быть условие для записи плохого ввода, когда вводятся менее 2 координат.Плохие условия ввода для [числа, числа] формы ввода в C

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

В этом случае я бы использовал регулярные выражения.

Я рекомендовал бы иметь взгляд на 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.

+0

Спасибо, но вы не знаете, возможно ли это сделать без регулярных выражений? Потому что программа является домашней работой для школы, поэтому я, вероятно, не могу использовать RE. – beranpa8

+0

Я обновил свой ответ. Пожалуйста, смотрите. – MondKin

+0

Это работает. Большое спасибо. – beranpa8

Смежные вопросы