ユーザーが入力した名前のリストをチェックして、入力された新しい名前がリストの一部であるかどうかを確認するプログラムを作成しようとしています。リストに含まれていない場合は、メインに -1 を返して、名前が見つからないことを出力する必要があります。リストの一部である場合は、0 を返し、名前の位置を出力する必要があります。
私が抱えている問題は、名前のリストを入力してから検索する名前を入力すると、その名前がリストの最初の名前でない限り、名前が見つからないということです。また、コードを見ると、文字列の位置ではなく「名前が見つかりました」と出力していることに気付くでしょう。これは単に、その方法がまだわかっていないためです。このジレンマの助けをいただければ幸いです。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX_NAMELENGTH 10
#define MAX_NAMES 5
void initialize(char names[MAX_NAMES][MAX_NAMELENGTH],int Number_entrys,int i);
int search(char names[MAX_NAMES][MAX_NAMELENGTH], int Number_entrys);
int main()
{
char names[MAX_NAMES][MAX_NAMELENGTH];
int i, Number_entrys,search_result;
initialize(names,Number_entrys,i);
search_result= search(names,Number_entrys);
if (search_result==-1){
printf("Found no names.\n");
}else{
printf("Names found");
}
getch();
return 0;
}
void initialize(char names[MAX_NAMES][MAX_NAMELENGTH],int Number_entrys,int i)
{
printf("How many names would you like to enter to the list?\n");
scanf("%d",&Number_entrys);
if(Number_entrys>MAX_NAMES){
printf("Please choose a smaller entry\n");
}else{
for (i=0; i<Number_entrys;i++){
scanf("%s",names[i]);
}
}
}
int search(char names[MAX_NAMES][MAX_NAMELENGTH],int Number_entrys)
{
int x;
char new_name[MAX_NAMELENGTH];
printf("Now enter a name in which you would like to search the list for\n");
scanf("%s",new_name);
for(x = 0; x < Number_entrys; x++)
{
if ( strcmp( new_name, names[x] ) == 0 )
{
return x;
}
}
return -1;
}