Le but de mon programme jusqu'ici est de créer 4 tableaux. 1 tableau 'char' qui va prendre dans 10 valeurs de chaîne différentes avec chaque élément ayant un maximum de 25 caractères. Et 3 autres tableaux qui prendront 10 valeurs entières et les stockent dans mon tableau. Je compile et exécute mon programme, et parcourt mes boucles for et une fois terminé, j'obtiens des valeurs entières étranges à la place de mon tableau teamName, et pour les tableaux 'teamWins' 'teamLosses' et 'teamTies', ça me donne le première valeur que j'ai entrée pour TOUS les éléments de ces tableaux. Je veux vraiment comprendre comment fonctionnent les tableaux, mais j'ai du mal à les déclarer et à les utiliser avec des entrées et des sorties. Quelqu'un peut-il voir et expliquer comment je peux prendre 10 chaînes avec des valeurs de 25 caractères dans chaque élément, et prendre 10 entiers dans les 3 autres tableaux avec des éléments de 10? Je vais joindre mon code source ci-dessous.Mon programme compile et lorsqu'il est exécuté, il ne me donne pas l'entrée que j'ai mis
#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");
}
Vous imprimez 'teamName' au lieu de' temName [i] 'et' la dernière printf' la chaîne de format ne correspond pas aux paramètres. Est-ce que votre compilateur ne vous avertit pas à ce sujet? –
Si vous utilisez 'gcc', ajoutez' -Wall -Wextra' à votre chaîne de compilation. Sur windows ('cl.exe' - VS), ajoutez'/Wall'. N'acceptez pas le code avant qu'il ne soit compilé sans avertissement. (vous pouvez utiliser '/ W4' sous windows,'/Wall' va déclencher des avertissements non-code que vous ne pouvez pas éliminer sans options de désactivation '/ wdXXX' spécifiques.) –