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 :

Tableau à double dimension


Sujet :

C

  1. #21
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Dans le cas où fichierMachine est NULL, j'ai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	else
    	{
    		if ferror(fichierMachine))//Une erreur s'est produite
    		{
    			perror("machine.txt");
    			return 1;
    		}
    	}
    Si fichierMachine est NULL, je n'ai pas besoin d'aller plus loin dans mon application.

    Dois-je tout de même initialiser tableauMachine?


    caractere = ligne[j];
    while (caractere != '\n')//Verification de non fin de ligne
    {
    strcat(alphabet,&caractere);

    strcat n'attend pas comme 2° argument l'adresse d'un caractère, mais l'adresse d'une chaîne de caractères, c'est à dire un tableau de caractères terminé par un 0.
    puisque mes données sont dans ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char ligne[256];
    fgets(ligne, sizeof ligne, fichierDonnees) != NULL)
    Je peux faire un strcpy(alphabet,ligne) ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  2. #22
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	else
    	{
    		if ferror(fichierMachine))//Une erreur s'est produite
    		{
    			perror("machine.txt");
    			return 1;
    		}
    	}
    Et si ferror(...) est faux ? Quelque chose du style suivant couvre tous les cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    else
    {
       if ferror(fichierMachine))perror("machine.txt");//Une erreur s'est produite
       return 1;
    }
    Je peux faire un strcpy(alphabet,ligne) ?
    Oui, ligne a été rempli par fgets sous la forme d'une chaîne de caractère.

    Le problème est dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcat(alphabet,&caractere);
    caractere n'est pas une chaîne de caractères mais 1 caractère (il n'y a pas de zéro terminal)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #23
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Effectivement... ferror pourrait ne pas valider la condition...

    Mais... j'ai du mal à voir en quel cas :s

    Même si algorithmiquement, c'est vrai que j'ai une erreur.

    Merci beaucoup Diogène, je regarde si je n'ai pas une erreur similaire pour les trois autres variables "non définies"
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  4. #24
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bien...

    J'en suis rendue à trois erreurs restantes...

    Mais le "valeur" est toujours non initialisé selon gcc

    Et il me dit qu'il ne passera pas dans deux instructions que sont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		for (i=0; i==compteurTableauMachine; i++)
    		{
    			free(tableauMachine[i]), tableauMachine[i] = NULL;
    		}
    		free(tableauMachine), tableauMachine = NULL;
    main.c:268: attention : ne sera jamais exécuté
    main.c:266: attention : ne sera jamais exécuté

    Le for et le free dans la boucle.
    Ils ne font partit que du bloc MAIN.

    voici le bloc de "valeur"
    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
    20
     
    while((i <= compteurTableauMachine) && (ligneTrouvee == 0))			//Tant que je n'ai pas trouvé la bonne transition
    			{
    				j = 0;															//Réinitialisation du compteur Colonne
    				while(tableauMachine[i][j] != ' ')								//Récupération de l'etat de la ligne
    				{
    					etatLigne[j] = tableauMachine[i][j];
    					j++;
    				}
    				j++;
    				valeur = tableauMachine[i][j];									//Valeur de test
    				if((strcmp(etatLigne,etatInitial) == 0) && (current->value == valeur))
    				{
    					ligneTrouvee = 1;
    				}
    				else
    				{
    					i++;
    				}
    			}
    main.c:39: attention : «valeur» may be used uninitialized in this function

    Merci à vous.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #25
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Il ne me reste plus que ceci

    main.c: Dans la fonction «main» :
    main.c:38: attention : «valeur» may be used uninitialized in this function
    Mais avancer aussi peu rapidement...

    Le code de son bloc est toujours le même à savoir :
    Code c : 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
    20
     
    while((i <= compteurTableauMachine) && (ligneTrouvee == 0))
    {
    	j = 0;
    	while(tableauMachine[i][j] != ' ')
    	{
    		etatLigne[j] = tableauMachine[i][j];
    		j++;
    	}
    	j++;
    	valeur = tableauMachine[i][j];
    	if((strcmp(etatLigne,etatInitial) == 0) && (current->value == valeur))
    	{
    		ligneTrouvee = 1;
    	}
    	else
    	{
    		i++;
    	}
    }
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  6. #26
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je ne saurais expliquer vraiment pourquoi...

    Mais à débugger le programme du point de vue trace plutôt que compilation, j'ai réussi à ne plus obtenir de warnings du tout.

    Merci à vous pour l'aide apportée tout au long.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #27
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    La cause est extérieure à ce while : Si on n'entre pas dans ce while, le corps du while ne peut pas initialiser valeur et, probablement, valeur est utilisé après ce while.
    Le compilateur dit alors que si on n'entre pas dans le while, valeur n'est pas initialisé.

    Si on est sûr qu'on va entrer dans le while, pas de réel problème, il suffit d'initialiser valeur à n'importe quoi au moment de sa définition pour faire taire le compilateur.
    Si il est possible de ne pas entrer dans le while, alors c'est une grosse erreur et il faut absolument que valeur soit correctement initialisé dans ce cas.

    Mais avancer aussi peu rapidement...
    Au début, il faut prendre le temps de comprendre les choses. Ce n'est pas du temps perdu, mais un investissement.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  8. #28
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Oui mais 48 heures pour régler cinq erreurs, c'est une première chez moi ^^

    Même le Java était plus conciliant avec moi :3
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. creation d'un tableau double dimension dynamiquement
    Par elmcherqui dans le forum C++
    Réponses: 3
    Dernier message: 09/07/2009, 20h05
  2. Tableau à double dimension
    Par 0635425 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 25/02/2008, 09h46
  3. Mettre un tableau à double dimension en session
    Par The Molo dans le forum ASP
    Réponses: 4
    Dernier message: 20/02/2008, 14h54
  4. Afficher un tableau à double dimension
    Par The Molo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/02/2008, 12h37
  5. [FLASH MX] Tableau à double dimension
    Par totoche dans le forum Flash
    Réponses: 4
    Dernier message: 11/10/2005, 22h04

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