コードがクラッシュする理由を理解しようとしています。私は次のような構造体の配列を持っています:
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 );
既存の名前を検索すると、それが見つかり、すべて問題ありません。ただし、存在しない名前を検索すると、セグメンテーション違反が発生します。私がここで見逃している明らかなものはありますか?