この関数があり、構造体の配列を検索しようとしています。どこが間違っているのかわかりませんが、関数が定義されている部分で、プレーヤーの国を小文字に変換しようとしていると思います(ファイルには国の名前が含まれています)。プログラムを実行し、国名を入力すると、検索したい名前を入力した後、プログラムが停止してクラッシュします。
誰でも私を助けることができますか?ありがとうございました 。
#define NAME_LENGTH 50
#define NUM_PLAYERS 200
struct player_champ
{
char player_country[NAME_LENGTH];
};
int search_player_by_country( struct player_champ ptr_player[] , char asked_name[NAME_LENGTH], int lines_got);
int main (void)
{
struct player_champ player_info[NUM_PLAYERS] = { { 0 } };
char asked_country[NAME_LENGTH]= {0};
fflush(stdin);
printf("\nEnter the name of the country you want to search for.\n\n>>>");
fgets(asked_country, sizeof(asked_country)-1, stdin);
asked_country[strlen(asked_country)-1] = '\0';
search_player_by_country ( player_info, asked_country, num_lines_read);
int search_player_by_country( struct player_champ ptr_player[] , char asked_country[NAME_LENGTH], int lines_got)
{
char temp_asked_country[NAME_LENGTH], temp_country_name[NAME_LENGTH];
int i,k,z=0,j,counter=0;
// there is a part of the code here that converts what user entered to lower case as well.
for (i = 0 ; i < lines_got; i ++)
{
k=0;
/* while (ptr_player[i].player_country)
{
temp_country_name[j] = tolower (ptr_player.player_country);
j++;
}*/
for (k = 0 ; k < lines_got; k ++)
{
temp_country_name[k] = tolower (ptr_player[k].player_country);
k++;
}
temp_country_name[k] = '\0';
if (strstr(temp_country_name, temp_asked_country) != NULL)
{
print_info( ptr_player[i]);
}
}
}