2016-11-13 1 views
0

Это часть моей программы «Телефонная книга».Программа не может сопоставлять данные в переменных

void viewone(){ 


    char name[25], fname[25]; 

    int n, ncheck, op; 

    fp = fopen("Phonebook.txt","r"); 

    printf ("\n Search by : \n 1: Name\n 2: Phone Number\n"); 
    printf ("Enter option : "); 
    scanf ("%d",&op); 

    switch(op){ 

     case 1: 
      printf ("\n Enter Name : "); 
      scanf ("%s",name); 

      fscanf(fp, "%s %d", fname, &ncheck); 

      while (!feof(fp)){ 

       printf ("\n\n %s \n\n",fname); 

       if (fname == name){    \\ Problem in here 

        printf ("\n\n Contact Found...\n"); 

        printf (" %s +880%d", fname, ncheck); 

        break; 

       } 

       else{ 

        fscanf(fp, "%s %d", fname, &ncheck); 

       } 

       if (feof(fp)){ 

        printf ("\n\n Contact Not Found...\n\n"); 

       } 

      } 

      menu(); 

      break; 

     case 2: 

      printf ("\n\n Enter Contact Number (+880) : "); 
      scanf ("%d",&n); 

      fscanf(fp, "%s %d", fname, &ncheck); 

      while (!feof(fp)){ 

       if (ncheck == n){ 

        printf ("\n\n Contact Found...\n"); 

        printf (" %s +880%d\n", fname, ncheck); 

        break; 

       } 

       else{ 

        fscanf(fp, "%s %d", fname, &ncheck); 

       } 

       if (feof(fp)){ 

        printf ("\n\n Contact Not Found...\n\n"); 

       } 

      } 

      menu(); 

      break; 

     default: 

      printf ("\n Wrong option...\n\n"); 

      viewone(); 

      break; 
     } 

    } 

Когда дело доходит до отмеченной линии, программа должна найти файл для «Fname», пока она не совпадет с «имя» характер. Но, хотя они совпадают, ничего не происходит, и программа все еще продолжается. И, в конце концов, он делает то, что сказано в заявлении else. Мой вопрос, почему это происходит и как я могу это исправить?

Моя программа отлично работает, когда я ищу по номеру телефона. Но почему это не происходит с характером?

+2

Плюс: возможный дубликат того, почему feof() всегда ошибочен. http://stackoverflow.com/q/5431941/905902 – wildplasser

ответ

-1

Сравнение строки не выполняется с помощью ==. Вместо этого используйте функцию сравнения строк, например:

strcmp(fname,name) 
+1

Возможно, ссылка поможет –

+0

Это может помочь: https: //www.tutorialspoint.com/c_standard_library/c_function_strcmp.htm – user5434084

+0

Ooohhh ... Я не уверен, что Ссылка TutorialsPoint будет хорошо снижена ... она улучшилась? –

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