Je suis tombé sur ce morceau de code aujourd'hui tout en tutorat certains étudiants dans un cours de langage de programmation C. L'exercice demandé pour implémenter deux fonctions. Le premier scanne l'entrée d'un utilisateur et le second affiche ce qui a été précédemment analysé. Le code que je suis tombé est le suivant:comportement étrange dans un code C sous gcc 4.4.3
#include <stdio.h>
void myInput(int i,int n)
{
int cpt;
int tab[n];
for (cpt=0; cpt<n; cpt++)
{
printf("Enter a number :");
scanf("%d",&i);
tab[cpt]=i;
}
}
void myDisp (int n)
{
int tab[n];
int cpt;
for (cpt=0; cpt <n; cpt++)
{
printf("%d ", tab[cpt]);
}
}
int main()
{
int n; int i;
printf(" Entrer the numbers of elements you want: \n");
scanf("%d \n",&n);
int tab[n];
myInput(i,n);
myDisp(n);
}
Bien que ce code est plein d'incohérences, il ne fonctionne effectivement sous gcc 4.4.3: il affiche les chiffres qui ont été entrés! !!!!! Est-ce que quelqu'un comprend comment ce code fonctionne?
Merci beaucoup
Pour référence future: mettez en surbrillance votre code et appuyez sur Ctrl + K ou cliquez sur le bouton '0 1' et ainsi de suite pour formater votre code. Merci. – birryree
Ceci est parfaitement valide C99, d'après ce que je peux voir. – Electro
@Electro, @birryree: Il regarde probablement l'utilisation de la variable 'tab' non initialisée dans 'myDisp'. – Thanatos