c - 如何在结构 C 的数组中搜索

标签 c arrays struct

<分区>

我在搜索结构数组时遇到问题。请帮助这是我到目前为止尝试过的代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    long long unsigned num;
    char name[20];
}Telbook;

int be(Telbook*);
void ki(Telbook*);
void search (Telbook*);

int main(){

printf("\t\t\t    \n\n\n");
Telbook tomb[50];
int db;
//Telbook *array=tomb;
db=be(tomb);            
ki(tomb);
search(tomb);
system("pause");
}
int be(Telbook *n){
    int i=0;
    printf("Enter phone # and names until the phone # you entered is 0\n");

    /*printf("Kérek egy nevet: ");
    scanf("%s",n->name);*/
    printf("Enter a Phone #: ");
    scanf("%llu",&n->num);

    while(n->num){
        printf("Enter a name: ");
        scanf("%s",n->name);
        i++;
        n++;
        printf("Enter a phone #: ");
        scanf("%llu",&n->num);

    }
    return i;
}
void ki(Telbook *n){
    int i=0;
    while(n[i]->num){

    printf("Name: %s, Phone #: %llu\n",n[i]->name,n[i]->num);
    i++;
    }
}
void search(Telbook *n){
    int i;
    int db=be(Telbook *n);
    char nev[20];
    printf("Enter the name you're  searching for: ");
    scanf("%s",nev);
    for(i=0;i<db;i++){
        if(n[i].name==nev)break;
        printf("%s",n[i.name]);
    }
    if(i==db){
    printf("The name doesn't exist'.\n");
    }
    else{
        printf("The name you have searhed for is: %s it's on the %d. index.\n",nev,i+1);
    }
}

就像我想在结构中搜索名称一样。

最佳答案

比较两个字符串的这一行不起作用:

if(n[i].name==nev)break;

它所做的是检查两个变量的地址,默认情况下这两个变量不相等。

你需要的是strcmp:

if (strcmp(n[i].name, nev) == 0)break;

这里是 a documentation page关于这个这个函数。

(顺便说一句,未经测试)。

关于c - 如何在结构 C 的数组中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54131117/

相关文章:

c - nftw 传递具有未定义值的 tflag

javascript - 从嵌套在进一步嵌套在数组中的对象中的数组中随机选择元素的逻辑

python - 对数组的所有元素进行积分

arrays - 在 Swift 中制作一系列进展系列的简单方法,如 1,3,5,

c - 在循环中打印字符串数组

swift - 具有关联类型的泛型结构实现协议(protocol)

java - Java C 源格式化程序库?

c - function() 中未指定的参数会发生什么?

c - 为什么我在这里没有得到任何输出?

c++ - 如何从二进制文件填充结构,同时避免内存对齐填充引起的问题?