Это часть моей программы «Телефонная книга».Программа не может сопоставлять данные в переменных
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. Мой вопрос, почему это происходит и как я могу это исправить?
Моя программа отлично работает, когда я ищу по номеру телефона. Но почему это не происходит с характером?
Плюс: возможный дубликат того, почему feof() всегда ошибочен. http://stackoverflow.com/q/5431941/905902 – wildplasser