これは私の「電話帳」プログラムの一部です。プログラムは変数内のデータと一致しません
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;
}
}
マークされた行になると、プログラムは 'name'文字と一致するまで 'fname'文字をファイルで検索する必要があります。しかし、彼らは一致しても、何も起こらず、プログラムはまだ続きます。そして最後に、それはelseステートメントで言われたことをします。私の質問は、なぜこれが起きているのか、どうすれば修正できるのでしょうか?
私の電話番号で検索すると、私のプログラムは完全に動作します。しかし、それはなぜ文字で起こっていないのですか?
プラス:なぜfeof()が常に間違っているの可能な複製。 http://stackoverflow.com/q/5431941/905902 – wildplasser