2014-02-05 3 views
2

здесь я прошу пользователю вводить номер:как передать значение переменной из его цикла в с

do{ 
    printf("Enter cellphone number +63"); 
    fflush(stdin); 
    gets(pb[i].cellphone); 

///check if there is a similar number from the database 
    for(r=0; r<i; r++){ 
     same = strcmp(pb[i].cellphone, pb[r].cellphone); 
     if(same==0){ 
     printf("Number is same with contact no. %d\n", r+1); 
     } 
    } 


/// at this point the value of same is becoming nonzero and continues to the next code. 

}while(!isdigit(*pb[i].cellphone)||same == 0); 

моя цель состоит в том, если пользовательский ввод неуникальный номер он попросит получить пользователю для ввода нового номера.

+1

Каков ваш актуальный вопрос? –

+1

Вам не разрешено использовать 'fflush' во входном потоке. Также никогда не используйте 'gets', поскольку вы не можете реализовать защиту от переполнения. –

+0

В чем проблема? Что вы ожидаете, что вы получаете? Любые ошибки? – Evert

ответ

1

Вы должны выйти из цикла for или same будет перезаписан в следующей итерации цикла:

do { 
    printf("Enter cellphone number +63"); 
    fflush(stdout);  // Flush stdout so that text is shown (needed because the printf doesn't end with a newline and stdout is line buffered) 
    gets(pb[i].cellphone); 

///check if there is a similar number from the database 
    for (r=0; r<i; r++){ 
     same = strcmp(pb[i].cellphone, pb[r].cellphone); 
     if (same==0){ 
     printf("Number is same with contact no. %d\n", r+1); 
     break; // Exit the loop. Otherwise same will be overwritten in next iteration 
     } 
    } 
} while(!isdigit(*pb[i].cellphone) || same == 0); 
0
int find_num(char *phone, int i, phones *phones) { 
    int r; 
    for(r=0; r<i; r++){ 
     if (!strcmp(phone, pb[r].cellphone)) 
     return r; 
    } 
    return -1; 
} 

while (1) { 
    printf("Enter cellphone number +63"); 
    fflush(stdin); 
    gets(pb[i].cellphone); 
    same = find_num(pb[i].cellphone, i, pb); 
    if (same == -1) break; 
    printf("Number is same with contact no. %d\n", same+1);   
} 
Смежные вопросы