IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Variable is being used without initialized ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 77
    Par défaut Variable is being used without initialized ?
    Salut!

    J'ai un petit problème avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
     
    int main()
    {
    	char c;
    	int i=0;
    	char * tab;
    	printf("Tapez une chaine de caracteres : ");
    	while(c = getch() != 0x0D)
    	{
    		tab[i] = c;
    		i++;
    	}
    	printf("Retour chariot!\n\n");
    	system("PAUSE");
    	return 0;
    }
    J'ai une erreur lorsque je tape une touche au clavier alors que j'en ai aucune a la compilation :
    The variable 'tab' is being used without being initialized.

    J'aimerais bien savoir pourquoi ?

    Merci d'avance,
    ++

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    C'est parce que tab est déclaré comme pointeur et non pas comme un tableau.

    En C, il faut, de plus, explicitement fixer dans le source la taille du tableau, par exemple

  3. #3
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    J'ajouterais à la réponse de alain.coutures qu'il faut faire attention à la priorité des opérateurs
    Et donc il faut mettre des parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((c = getch()) != 0x0D)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 77
    Par défaut
    Très juste pour la deuxième erreure mais pour la première je voulais en faite faire un tableau de caractère dynamique en faisant :

    char * tab;

    Une allocation de taille dynamique en mémoire selon la chaine de caractère qui est tapé.

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    J'ai une erreur lorsque je tape une touche au clavier alors que j'en ai aucune a la compilation :
    The variable 'tab' is being used without being initialized.
    Ton compilateur est mal réglé, augmente le niveau d'avertissement. Ce message aurait dû être délivré au moment de la compilation sous probablement la forme d'un avertissement. Ce type d'avertissement dénote toujours une erreur grave de programmation.

    Très juste pour la deuxième erreure mais pour la première je voulais en faite faire un tableau de caractère dynamique en faisant :
    Une allocation de taille dynamique en mémoire selon la chaine de caractère qui est tapé.
    Dans ce cas, il faut faire précéder l'utilisation par l'allocation dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * tab = malloc(....);

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 77
    Par défaut
    Oui mais c'est toujours pareil parceque même avec malloc il faut définir une taille obligatoire.

    N'y aurait il pas un moyen pour que le tableau s'adapte à la taille de la chaine de caractère saisie ?
    En C++ j'ai toujours utilisé char * tab; pour un tableau dynamique de caractères sa a toujours fonctionné la je ne vois vraiment pas pourquoi cela ne fonctionne pas...

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2013, 01h41
  2. Réponses: 5
    Dernier message: 03/07/2012, 16h45
  3. Réponses: 2
    Dernier message: 09/12/2011, 08h03
  4. [IDEA] Probleme de "variable is never used"
    Par nicdo77 dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 2
    Dernier message: 09/08/2007, 00h53
  5. erreur:The local variable may not have been initialized
    Par wiss20000 dans le forum Langage
    Réponses: 7
    Dernier message: 22/03/2007, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo