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 :

Initialisation de char qui modifie un autre char


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Par défaut Initialisation de char qui modifie un autre char
    Bonjour,
    J'ai actuellement un problème qui peut paraître tout bête mais que je ne parviens pas à résoudre. Je suis en train de programmer en C un pendu (sans interface graphique)(cf M@teo) et je bloque sur une valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        puts(motsecret) ;
        char verif[longchaine] ;
            puts(motsecret) ;
    Voila ce que ça m'affiche sur la cmd :
    les caractères à partir du "&" correspondent à ça : "╝▄<"
    Les deux premiers char s'affichent sans problème jusqu'au moment ou je place char verif, longchaine étant une variable qui marche sur les autres char
    Je vous fournis la partie du code concerné :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "entrerlettre.h"
    #include "dico.h"
     
    int main(int argc, char* argv[])
    {
        int continuer = 1 ; while (continuer == 1)
        {
        printf("\n== Bonjour et bienvenue sur le jeu du pendu ! ==") ;
        printf("\n Vous avez 10 essais faux pour chaque partie\n") ;
        char malettre = 0 ; int coups = 0 ; int coupsmax = 10 ;
        char motsecret[] = {0} ;
        piocherMot(motsecret) ;
        int longchaine =0 ;
        longchaine = strlen(motsecret) ;
        char motcode[longchaine] ;
            puts(motsecret) ;
        char (verif[longchaine] );
            puts(motsecret) ;
        int lettretrouvee = 0 ;
        int i = 0 ;
            sprintf(verif,"\n**************") ;
            sprintf(motcode,"\n**************") ;
        while (lettretrouvee != longchaine)
        {
            i = 0 ;
            strcpy(verif,motcode) ;
            if (coups == coupsmax)
                { printf("\n-- Vous etes des a present pendu.. --\n\n") ;
                printf("Voulez-vous faire une autre partie ? \n\n1. OUI\n0.NON\nVotre choix : ") ;
                scanf("%d",&continuer) ; exit(0) ; }
            printf("\n\nDemandez une lettre : ") ;
            malettre = lire() ;
     
            while (i != longchaine)
            {
                if (malettre == motsecret[i])
                    { lettretrouvee++ ; (motcode[i]) = (motsecret[i]) ;}
                printf("%c",motcode[i]) ;
     
                i++ ;
            }
     
        printf("\nVous avez trouvé %d lettre sur les %d ! \n",lettretrouvee,longchaine) ;
        if (strcmp(verif,motcode)==0) {coups++ ;}
        printf("Il vous reste encore %d coups a jouer ! ",coupsmax - coups) ;
        }
        printf("\n==Felicitation, vous avez reussis en %d coups ! ==",coups) ;
        printf("\nVoulez-vous faire une autre partie ? \n\n1. OUI\n0. NON\nVotre choix : ") ;
        scanf("%d",&continuer) ;
        }
        return 0 ;
    }
    C'est surement très brouillon pour vous mais je viens juste de commencer et j'ai fait ce qui me semblait logique et accessible
    Merci de vos réponses et si vous voulez pluss d'info dites le moi
    Cordialement
    Un aspirant à la programmation

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Par défaut
    Rebonjour,
    Désolé pour ce double post et cette discussion, j'ai finalement résolu mon problème d'une façon très simple mais que je ne comprend pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char motsecret[100] = {0} ;
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char motsecret[] = {0} ;
    J'ai aussi remarqué différentes telles que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(verif,"\n**************") ;
    ou il faut enlever le \n

    Encore désolé pour cette discussion mais elle pourrait aider quelqu'un (il y a très peu de discussions parlant de ce problème la, je n'en ai pas trouvé)

  3. #3
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Insère printf("%zu bytes", sizeof motsecret); après la déclaration de ton tableau dans la première version de ton programme, puis constate le souci.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Par défaut
    Warning : Unknow conversion type character 'z' in format
    Et ça m'affiche zu bytes sur le cmd ^^
    il faut faire # include <quelque chose> non?

  5. #5
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Ah, les compilateurs Microsoft..

    Essaie avec : printf("%u bytes", (unsigned int)(sizeof motsecret)); .

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Par défaut
    La cmd me marque "1 bytes" Si c'est bien byte et donc octet alors ca fait 8 bit et cela me permet de stocker 8 octets donc 8 char (si je me trompe pas )

    Mais effectivement cela fait toujours 1 bytes quelque soit le mot piocher dans ma bibliothèque. (plus ou moins long)

    Merci pour cette réponse rapide et cette "fonction?" que je connaissais pas, je la réutiliserai ^^

    Je rajoute ceci :
    J'ai maintenant compris ce que tu voulais me dire et pour ceux que ça intéresse : https://fr.wikipedia.org/wiki/D%C3%A...ment_de_tampon
    Ils appellent ça l'overbuffer et c'est super intéressant !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CSS hover d'un élément qui modifie un autre élément
    Par pol2095 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 07/01/2012, 09h20
  2. modifier un champs teste qui modifier un autre automatiquement
    Par dad72 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/02/2009, 16h26
  3. [Excel VBA]fonction dans une cellule qui modifie une autre cellule
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/01/2007, 17h43
  4. Réponses: 3
    Dernier message: 13/07/2006, 00h51
  5. [Formulaire] zone de liste qui en modifie d'autres
    Par dutrannoy dans le forum Access
    Réponses: 4
    Dernier message: 09/10/2005, 20h19

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