Programme C

Résolu
fabien.joubert Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je suis très intéressé par le C
mais je suis face à ce programme
que je ne comprends pas du tout.

Pouvez vous m'expliquer ce qu'il fait svp?
Vous me seriez d'un grand secours.
merci d'avance

PS : Je connais le mécanisme des pointeurs
Pas besoin de vous embêter à me l'expliquer.

int main ( int argc, char **argv )
{
char *str;
while ( *argv ) argv++; argv++;
while ( **argv != 85 ) argv++;
str = *argv;
while (*str != 61) str++;
str++;
printf("\nHello %s...\n", str);
return 0;
}

3 réponses

Manu
 
Bonjour,

Ben, les variables d'environnement sont juste après les arguments.
Le 85 sélectionne celle qui commence par 'U' (c'est "USER"), et le 61 sélectionne le signe '='. On obtient donc la valeur derrière "USER="

Manu
1
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Ouaah ca me laisse rêveuse, il est capable de chopper ton login ! Mais alors pourquoi, ça c'est un mystère :p En toute logique le programme aurait dû segfaulter mais la personne qui l'a écrit savait qu'il trouverait dans cette zone mémoire le login utilisé. Là c'est plus une question sur la manière dont linux organise ses informations en mémoire qu'une question de langage C... J'imagine que linux stocke le propriétaire du programme exécuté en mémoire et que cette manip est un moyen de le récupérer.

Bonne chance
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Et bé :-)
0