Bonjour tout le monde.
Je viens de tomber sur un truc vraiment bizarre avec le compilateur C
natif de Ubuntu 12.04
Soit le programme trivial suivant
#include<stdio.h>
Que je le compile avec la commande cc ou gcc,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 main(argc,argv) int argc; char *argv[]; { printf(" \n argv0 %s \n",argv[0]); printf(" \n argv1 %s \n",argv[1]); }
a l'exécution, voila ce que je récuperé avec un argument qui contient
un ! (point d'exclamation)
=> renvoie le truc suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./a.out a!a
alors que par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ./a.out aapropos strstr argv0 ./a.out argv1 aapropos
=> renvoie ce a quoi on s'attend a savoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./a.out toto
D'une façon générale s'il y a un point virgule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ./a.out toto argv0 ./a.out argv1 toto
dans la chaine de caractères argument fournie,
le programme débloque complètement.
Quel qu'un a-t-il une idée pour expliquer ce mystère ?
merci d'avance
Partager