Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec char motSecret[] = ""; Dés lors Qu'il exède les 8 char

Aucune réponse
Avatar
clapannac
Voici le code après avoir corrigé assez d'erreur pour que toutes les étapes, jusqu’à l’exécutable, s’accomplissent sans erreur...
Cependant, je n'obtiens toujours pas le résulta es conté.
Puisque après l’exécution de prog.exe (ci-dessous, après le code) je devrais y voir :

Longueur du mot secre : *********
Propose une lettre : o
Etat du mot secre : *
**
***
****
*****
******
*******
********
*********
*********
Process returned 0 (0x0) execution time : 7.109 s
Press any key to continue.

Or ce n'est pas le cas.
Néanmoins j'aimerai tout au tant comprendre ce qui encore m'échappe.
Toujours en vous remerciant pour l'aide précieuse que vous m'apportez.

###################### les fichiers source ###############
Main.c #
########

#include <stdio.h>
#include <stdlib.h>
#include "Proto.h"

int main()
{
char motSecret[] = "GRAMMAIRE";
char lettreTap;

printf("Longueur du mot secre : ");
Etoile_Secr(motSecret);

printf("Propose une lettre : ");
lettreTap = lireCaractere();

printf("Etat du mot secre : ");
printf("%s",Result_Trouve_Cache_Save(motSecret,lettreTap));

return 0;
}

###########
Fonction.c #
###########

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "Proto.h"

char lireCaractere()
{
char caractere = 0;

caractere = getchar(); // On lit le premier caractère
caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà

// On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)
while (getchar() != '\n') ; // il y a un ";" car c'est une boucle minimaliste "Technique de programmeur"

return caractere; // On retourne le premier caractère qu'on a lu

}

void Etoile_Secr(char* Tab)
{
int i;

for(i=0;i<(int)strlen(Tab);i++)
{
printf("*");
}

printf("\n");
}

char* Result_Trouve_Cache_Save(char* Tab,char lettre)
{
int i;
char* copieTab = 0;

copieTab = malloc((int)strlen(Tab));
if (copieTab == 0)
{
exit(0);
}

for (i = 0 ; i < (int)strlen(Tab) ; i++)
{
if (lettre == Tab[i])
{
copieTab[i] = lettre;
printf("%s\n",copieTab);
}
else
{
copieTab[i] = '*';
printf("%s\n",copieTab);
}

}

return copieTab;
}

################ Headers ###############
Proto.h #
########

#ifndef _PROTO_
#define _PROTO_

char lireCaractere();
void Etoile_Secr(char* Tab);
char* Result_Trouve_Cache_Save(char* Tab,char lettre);

#endif

#####################prog.exe#####################

Longueur du mot secre : *********
Propose une lettre : o
Etat du mot secre : *=
**=
***
****ˆ=
*****=
******=
*******
********R_OF_PRO_
*********_OF_PRO_
*********_OF_PRO_
Process returned 0 (0x0) execution time : 7.109 s
Press any key to continue.

Réponses