1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
printf("Entrez le nom de l'avion désiré\n");
scanf("%s", avion); /* GL : pas de verification de taille : si la saisie est plus importante que la taille d'avion o a u depassement de buffer, pour recuperer une chaine de caractere utilise plutot fgets()*/
FILE*pfcav=fopen("FicCarAv.txt", "r");
if(pfcav!=NULL)
{
while(fgets(chaine, sizeof chaine, pfcav)!=NULL)
{
fgets(chaine, sizeof chaine, pfcav);
/* GL : le fgets n'st a faire qu'une fois, lorsqu'on appelle une fonction, elle execute ce qu'elle est cense faire et retourne, on ne l'appelle pas une fois pour avoir le resultat de l'operation et une fois pour effectuer le traitement */
i=0;
while(chaine[i]!='\t')
/* GL : il n'y a pas de verification sur la taille d'avion temp, la encore on peu avoir un debordement de buffer */
{
aviontemp[i]=chaine[i];
i++;
}
if (strcmp(aviontemp,avion)==0)
/* je compare le nom donné par l'utilisateur et celui de la ligne du fichier*/
{
/* GL : pourquoi introduire une variable "a" ? Il est possible d'utiliser directement sizeof avion */
a=sizeof avion;
i= a+3;
/* GL : Pourquoi ce decaler de sizeof avion (qui est la taille du tableau avion et non la longueur de la chaine), il serait plus judicieux de ce deplacer de la longueur lue dans le fichier, d'autant plus qu'elle est deja contenue dans i. Et pourquoi "+3" */
/*pour sauter les 2 tab*/
while(chaine[i]!='\t')
{
/* GL : toujours pas de verification de la taille */
categorie[i]=chaine[i];
i++;
}
/*mise en mémoire de la catégorie*/
i=i+3;
/* re saut des 2 tab*/
while(chaine[i]!='\t')
{
/* GL : toujours pas de verification de la taille */
constructeur[i]=chaine[i];
i++;
}
i=i+3;
while(chaine[i]!='\t')
{
/* GL : toujours pas de verification de la taille */
distf[i]=chaine[i];
i++;
}
/* GL : atoi est deprecie, utilise plutot strtol() ca te permettra en plus de verifier que la conversion s'est bien passe */
DistF=atoi(distf);
/* conversion en entier pour la distance c'est mieux*/
i=i+3;
while(chaine[i]!='\t')
{
/* GL : toujours pas de verification de la taille */
vitc[i]=chaine[i];
i++;
}
/* GL : Idem atoi precedent */
VitC=atoi(vitc);
}
}
/* GL : le fichier n'est pas ferme */
} |