这是我的“电话簿”程序的一部分。
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”字符,直到与“name”字符匹配为止。但尽管它们匹配,但什么也没有发生,程序仍然继续进行。最后,它按照 else 语句中的指示执行操作。我的问题是为什么会发生这种情况以及如何解决它?
当我使用电话号码搜索时,我的程序运行完美。但为什么角色没有发生这种情况呢?
最佳答案
比较字符串不是通过 == 完成的。而是使用像这样的字符串比较函数
strcmp(fname,name)
关于c - 程序无法匹配变量中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40573297/