#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN_LINE 80
#define LEN_NAME 30
#define MAX_LINES 30
#define LEN_POS 5
#define LEN_HAND 5
#define LEN_THROW 5
#define LEN_STATUS 10
#define LEN_MLBSTATUS 5
#define MAX_PLAYERS 26
typedef struct
{
int jerseyNumber;
char firstName[LEN_NAME + 1];
char lastName[LEN_NAME + 1];
char position[LEN_POS + 1];
char battingHand[LEN_HAND + 1];
char throwingHand[LEN_THROW + 1];
int birthYear, birthMonth, birthDay, heightFeet, heightInches, weight;
char status[LEN_STATUS + 1];
char mlbStatus[LEN_MLBSTATUS + 1];
} player_t;
//protypes for all functions
void displayPlayer(player_t *aPlayerPtr);
void displayWelcome(void);
void resultsProvided(void);
void singleDisplay(player_t *aPlayerPtr);
int main(void)
{
FILE * filePtr;
int index, count,i;
char line[LEN_LINE + 1];
char userChoice;
char repeat;
player_t players[MAX_LINES];
filePtr = fopen("Shrimp.txt","r");
if (filePtr == NULL)
{
printf("Unable to open file.\n");
}
else
{
index = 0;
while(index < MAX_LINES && fgets(line, LEN_LINE, filePtr))
{
if(14 == sscanf(line, "%i %30s %30s %5s %5s %5s %i %i %i %i %i %i %10s %5s",
&players[index].jerseyNumber, players[index].firstName,
players[index].lastName, players[index].position,
players[index].battingHand, players[index].throwingHand,
&players[index].birthYear, &players[index].birthMonth,
&players[index].birthDay, &players[index].heightFeet,
&players[index].heightInches, &players[index].weight,
players[index].status, players[index].mlbStatus)
)
{
index++;
}
}
fclose(filePtr);
count = index;
displayWelcome();
do
{
printf("Choose how you would like to search.\nEnter A to display all players information.\
\nEnter N to search a player based on name.\nEnter J to search a player based on jersey number.\
\nEnter P to search a player based on position.\nEnter your choice: ");
scanf("%c",&userChoice);
if(userChoice == 'A' || userChoice == 'a'){
for(index = 0; index < count; index = index + 1)
{
displayPlayer(&players[index]);
}
}
if(userChoice == 'J' || userChoice == 'j'){
int jerseyNumber;
printf("Enter jersey number for the player: ");
scanf("%i",&jerseyNumber);
for(i=0; i<=MAX_PLAYERS; i++)
{
if(jerseyNumber == players[i].jerseyNumber)
{
singleDisplay(&players[i]);
}
}
}
if(userChoice == 'N' || userChoice == 'n'){
char playerName[LEN_NAME + 1];
printf("Enter name for the player: ");
scanf("%s",playerName);
for(i=0; i<=MAX_PLAYERS; i++)
{
if(strcmp(playerName, players[i].firstName)== 0)
{
singleDisplay(&players[i]);
}
}
}
if(userChoice == 'P' || userChoice == 'p'){
char playerPosition[LEN_NAME + 1];
printf("Enter position for the player: ");
scanf("%s",playerPosition);
for(i=0; i<=MAX_PLAYERS; i++)
{
if(strcmp(playerPosition, players[i].position)== 0)
{
singleDisplay(&players[i]);
}
}
}
printf ("Would you like to search again?\nEnter Y or y for Yes or any other character to exit this program!\n");
scanf ("\n%c", &repeat);
}
while (repeat == 'Y' || repeat == 'y');
}
resultsProvided();
return 0;
}
void displayPlayer(player_t *aPlayerPtr)
{
printf("JERSEY: %i PLAYER NAME: %s %s POSITION: %s BATTING HAND: %s THROWING HAND: %s BIRTHDAY: %i/%i/%i HEIGHT: %i'%i WEIGHT: %i STATUS: %s MLB 40-STATUS: %s\n\n",
aPlayerPtr->jerseyNumber,aPlayerPtr->firstName,aPlayerPtr->lastName,aPlayerPtr->position,
aPlayerPtr->battingHand,aPlayerPtr->throwingHand,aPlayerPtr->birthMonth,aPlayerPtr->birthDay,
aPlayerPtr->birthYear,aPlayerPtr->heightFeet,aPlayerPtr->heightInches,aPlayerPtr->weight,
aPlayerPtr->status,aPlayerPtr->mlbStatus
);
}
void displayWelcome(void)
{
printf("Welcome to Adrian's Baseball Program!\n");
}
void resultsProvided(void)
{
printf("\nResults provided by Adrian.\n");
}
void singleDisplay(player_t *aPlayerPtr)
{
printf("JERSEY: %i\nPLAYER NAME: %s %s\nPOSITION: %s\nBATTING HAND: %s\nTHROWING HAND: %s\
\nBIRTHDAY: %i/%i/%i\nHEIGHT: %i'%i\nWEIGHT: %i\nSTATUS: %s\nMLB 40-STATUS: %s\n\n",
aPlayerPtr->jerseyNumber,aPlayerPtr->firstName,aPlayerPtr->lastName,aPlayerPtr->position,
aPlayerPtr->battingHand,aPlayerPtr->throwingHand,aPlayerPtr->birthMonth,aPlayerPtr->birthDay,
aPlayerPtr->birthYear,aPlayerPtr->heightFeet,aPlayerPtr->heightInches,aPlayerPtr->weight,
aPlayerPtr->status,aPlayerPtr->mlbStatus
);
}
私は、ユーザーが私はトラブル正しく動作するためにelse文を取得したのですrepeatedly.Also検索することができますwhileループのために期待して働いて、ほとんどすべてを取得することができました。
if(userChoice == 'J' || userChoice == 'j'){
int jerseyNumber;
printf("Enter jersey number for the player: ");
scanf("%i",&jerseyNumber);
for(i=0; i<=MAX_PLAYERS; i++)
{
if(jerseyNumber == players[i].jerseyNumber)
{
singleDisplay(&players[i]);
}else{
printf("The jersey number entered is not found.");
}
}
}
それがループし、私は、配列に数値を入力した場合でも、それが入力された背番号が見つからない
Welcome to Adrian's Baseball Program!
Choose how you would like to search.
Enter A to display all players information.
Enter N to search a player based on name.
Enter J to search a player based on jersey number.
Enter P to search a player based on position.
Enter your choice: J
Enter jersey number for the player: 18
JERSEY: 18
PLAYER NAME: Matt Tomshaw
POSITION: P
BATTING HAND: R
THROWING HAND: L
BIRTHDAY: 12/17/1988
HEIGHT: 6'2
WEIGHT: 200
STATUS: Active
MLB 40-STATUS: No
(第18号は、ファイル内の最初の背番号である)このようなものを出力します。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号は見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。ジャージー番号番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号は、入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号が見つかりません。入力されたジャージー番号は見つかりません。別の番号を練習したいですか? このプログラムを終了するには、Yesまたは他の文字でYまたはyを入力してください!
あなたが試したことを示してください。 –
?ループして比較する?問題はどこですか? –
あなたのコードで 'index = 0、count;'となるのはどういう意味ですか? – Sma