Programme C

Résolu/Fermé
fabien.joubert Messages postés 35 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 31 juillet 2008 - 11 nov. 2007 à 12:32
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 11 nov. 2007 à 23:07
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

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 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
11 nov. 2007 à 14:10
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 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
11 nov. 2007 à 23:07
Et bé :-)
0