我的程序到目前爲止的目的是創建4個數組。 1個'char'數組,每個元素最多可以包含25個字符,這個數組將包含10個不同的字符串值。和其他3個數組,將採取10個整數值並將它們存儲到我的數組中。我編譯並運行我的程序,並循環遍歷我的for循環,一旦完成,我在我的teamName數組中找到一些奇怪的整數值,對於'teamWins''teamLosses'和'teamTies'數組,它給了我爲這些數組中的所有元素輸入的第一個值。我真的很想了解數組是如何工作的,但是我很難聲明它們,並在輸入和輸出中使用它們。 任何人都可以看到並解釋如何在每個元素中取10個字符串中的25個字符的值,並將10個元素中的10個整數取入另外的3個數組中?我會在下面附上我的源代碼。我的程序編譯和運行時,它不會給我我輸入的輸入
#include <stdio.h>
#include <stdlib.h>
#define NUM_TEAM 10
void displayWelcome(void);
int main(void)
{
char * teamName[NUM_TEAM + 1][30] = { "" };
int teamWins[NUM_TEAM] = {0};
int teamLosses[NUM_TEAM] = {0};
int teamTies[NUM_TEAM] = {0};
int i, bestPercent, worstPercent;
displayWelcome();
//Team Name
for (i = 0; i < NUM_TEAM; i++)
{
//Prompt and enter team name
printf("Enter %i's team name: ", i + 1);
fgets (teamName[NUM_TEAM], sizeof teamName[NUM_TEAM], stdin);
//Data validation
}
//Team wins
for (i = 0; i < NUM_TEAM; i++)
{
printf("Enter wins for team number %i : ", i + 1);
scanf("%i", &teamWins[ i ]);
/*Data validation
while (1 != scanf("%i", & teamWins) || teamWins <= 0)
{
fflush(stdin);
printf("Enter a numerical value greater than zero: ");
}*/
}
//Team losses
for (i = 0; i < NUM_TEAM; i++)
{
printf("Enter losses for team number %i : ", i + 1);
scanf("%i", &teamLosses[ i ]);
/*Data validation
while (1 != scanf("%i", & teamLosses) || teamLosses <= 0)
{
fflush(stdin);
printf("Enter a numerical value greater than zero: ");
}*/
}
//Team ties
for (i = 0; i < NUM_TEAM; i++)
{
printf("Enter ties for team number %i : ", i + 1);
scanf("%i", &teamTies[ i ]);
/*Data validation
while (1 != scanf("%i", & teamTies) || teamTies <= 0)
{
fflush(stdin);
printf("Enter a numerical value greater than zero: ");
}*/
}
//Display Data
for (i = 0; i < NUM_TEAM; i++)/* output each word read */
{
printf("%s", teamName);
printf("wins losses ties\n");
printf("%i %i %i\n", teamName[i], teamWins[i], teamLosses[i], teamTies[i]);
}
return 0;
}
void displayWelcome(void)
{
printf("Welcome to my Football Stats\n\n");
}
您打印'teamName',而不是'temName [I]',在過去'printf'格式字符串與參數不匹配。你的編譯器沒有警告過你嗎? –
如果使用'gcc'將'-Wall -Wextra'添加到您的編譯字符串中。在Windows('cl.exe' - VS)上,添加'/ Wall'。在沒有警告的情況下編譯之前不要接受代碼。 (你可以在窗口上使用'/ W4','/ Wall'會觸發一些非代碼警告,如果沒有特定的'/ wdXXX'禁止選項,你將無法消除這些警告。) –