gpt4 book ai didi

c - strcmp 的段错误?

转载 作者:行者123 更新时间:2023-12-04 11:18:08 24 4
gpt4 key购买 nike

我想了解为什么我的代码会崩溃。我有一个结构数组,如下所示:

typedef struct contact {

char cFirstName[10];
char cLastName[10];
char cTelphone[12];

} address ; // end type

在代码中我这样初始化数组:

address myContacts[5];

for ( i = 0; i < 5 ; i++ ){
strcpy(myContacts[i].cFirstName, "0");
strcpy(myContacts[i].cLastName,"0");
strcpy(myContacts[i].cTelphone,"0");
}

这个有效:

for ( i = 0; strcmp(myContacts[i].cFirstName,"0") != 0 ; i++ ){                                             
printf("\nmyContacts[%d].cFirstName: %s", i, \
myContacts[i].cFirstName );
}// end for

所以,我只打印出有内容的联系人。

但是,我无法理解为什么我的搜索联系人功能不起作用:

void searchContact( address * myContacts,    char * name ){
int found = 1;
int i = 0;

for ( i = 1; found != 0 ;i++ ){
found=strcmp(myContacts[i-1].cFirstName, name);

printf(" Name Found %s", myContacts[i-1].cFirstName);
}
} // end of searchContacts

我这样调用这个函数:

printf("\nEnter a name or part of a name to search:\n");
fscanf(stdin, "%s", buffer);
getchar(); // clear the last enter
printf("\nThe line you entered was:\n");
printf("%s\n", buffer);
searchContact( myContacts, buffer );

如果我搜索已找到的现有名称,一切正常。然而,寻找一个不存在的名称,导致段错误。我在这里遗漏了什么明显的东西吗?

最佳答案

问题在这里:

        for ( i = 1; found != 0 ;i++ ){
found=strcmp(myContacts[i-1].cFirstName, name);

printf(" Name Found %s", myContacts[i-1].cFirstName);
}

您需要添加类似 for ( i = 1; found != 0 && i < num_of_contacts ;i++ ) 的内容否则你会超出你的数组!

关于c - strcmp 的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com