Explication pour un ProgrammeQuiAfficheLaPlusGdeLigne
Bonsoir tout le monde.
Nouveau exo, nouvelles questions (désolée j'apprends le langage C toute seule avec un bouquin espagnol (et me demander pas pourquoi ^^)).
Bref, voici un programme qui doit retourner une ligne saisie par l'utilisateur, celle-ci devant être la plus grande qu'il y a été saisie.
Ca nous donne :
Code:
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
| #include <stdio.h>
#define MAXLINE 1000 //Taille maximùun de la ligne entree
int getline(char line[], int maxline);
void copy(char to[], char from[]);
//Imprime la ligne de l'entree la plus grande
main()
{
int len; //taille de la ligne
int max; //taille maximun jusqu'au moment
char line[MAXLINE]; //Ligne entre actuelle
char longest[MAXLINE]; //Sauvegarde la ligne la plus grande
max = 0;
while ((len = getline(line, MAXLINE))>0)
if (len>max){
max = len;
copy(longest,line);
}
if(max >0) //Il y avait une ligne
printf("%s",longest);
return 0;
}
//Getline : lis une ligne en s, retourne sa taille
int getline(char s[], int lim)
{
int c, i;
for(i = 0; i<lim-1 && (c = getchar()) != EOF && c!= '\n';++i)
s[i] = c;
if(c == '\n'){
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
//Copie : cpoie 'from' en 'to'; en supposant que to est suffisament grand
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
} |
Je ne comprends pas tout à ce pg :( même pas grand chose d'ailleurs...
Bref, précisément, voici mes questions :
- pour les arguments dns les fonctions déclarées, que signifie char to[] par exemple ? (c'est surtout les crochets qui me gênent...)
-Pq devons nous faire :
int getline(char line[], int maxline);
void copy(char to[], char from[]);
au début ? parce que si je ne met pas ces deux lignes, mon programme fonctionne encore.
-Que signifie : char line[MAXLINE] ? Ou plutôt quelle est l'action de cette instruction ?
- Que signifie '\0'
Whaouu, je ne comprends pas pourquoi ils nous propose un pg si difficile dès le début...8O c'est vraiment flou dans ma tête. Une aide ?
Merci d'avance !